Добавление свойства в отношение многие ко многим - PullRequest
0 голосов
/ 08 июня 2018

Мне нужно хранить данные в БД, которая связана с двумя моделями, имеющими отношение многие ко многим.

Каждый Client может иметь много Contacts, а каждый контакт может иметь много Clients.Каждый контакт имеет приоритет у каждого клиента.Я сделал модель с составным ключом, состоящим из идентификатора Client и идентификатора Contact, который обладает свойством 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...