将属性添加到多对多关系

时间:2018-06-08 17:09:12

标签: c# sql-server asp.net-mvc entity-framework

我需要将数据存储在与两个具有多对多关系的模型相关的数据库中。

每个Client可以包含多个Contacts,每个联系人都可以有多个Clients。每个联系人都优先考虑每个客户。我创建了一个模型,其中包含一个由Client ID和Contact ID组成的复合键,该ID具有Priority属性,但使用起来很麻烦。例如,我不知道按优先顺序订购客户联系人的好方法。

所以使用它看起来像这样:

MyDbContext db = new MyDbContext();
ClientModel client = db.Clients.Find(clientId);
ContactModel contact = db.Contacts.Find(contactId);
ContactPriorityModel priorityModel = db.ContactPriorities.Find(clientId, contactId);
int priority = priorityModel.Priority;

ContactModel只有一个相关ClientModel时,排序就像client.Contacts.OrderBy(contact => contact.Priority)一样简单,但将此更改为多对多关系会导致并发症。

(可能不必要)代码:

public class MyDbContext
{
    public DbSet<ClientModel> Clients { get; set; }
    public DbSet<ContactModel> Contacts { get; set; }
    public DbSet<ContactPriorityModel> ContactPriorities { get; set; }
}

public class ClientModel
{
    public int Id { get; set; }
    public virtual ICollection<ContactModel> Contacts { get; set; }
    // Other properties
}

public class ContactModel
{
    public string Id { get; set; }
    public virtual ICollection<ClientModel> Clients { get; set; }
    // Other properties
}

public class ContactPriorityModel
{
    [Key, Column(Order = 0)]
    public int ClientId { get; set; }

    [Key, Column(Order = 1)]
    public string ContactId { get; set; }

    public int Priority { get; set; }
}

0 个答案:

没有答案
相关问题