@D8i

Как реализовать несколько many-to-many в одной сущности?

И так, у меня есть две сущности:

Ticket:
public class Ticket
{
    public long Id { get; set; }

    public long CustomerId { get; set; }
    public User Customer { get; set; }
        
    public ICollection<User> Partners { get; set; }
    public ICollection<User> Maintainers { get; set; }
}


и User:
public class User
{
    public long Id { get; set; }

    public ICollection<Ticket> AsCustomerTickets { get; set; }
    public ICollection<Ticket> AsPartnerTickets { get; set; }
    public ICollection<Ticket> AsMaintainerTickets { get; set; }
}


Нужные мне связи:
1. User Customer -> one-to-many -> ICollection<Ticket> AsCustomerTickets
2. ICollection<User> Partners -> many-to-many -> ICollection<Ticket> AsPartnerTickets
3. ICollection<User> Maintainers -> many-to-many -> ICollection<Ticket> AsMaintainerTickets


Первый (one-to-many) реализовал с помощью modelBuilder:
modelBuilder.Entity<Ticket>()
                .HasOne(t => t.Customer)
                .WithMany(u => u.AsCustomerTickets);


Остальные никак у меня не получаются. Entity Framework не поддерживает пока что many-to-many, была предложена альтернатива в документации EF, через создание некого TicketUser (в моем случае) - но как я понял, она подходит для одной связки many-to-many. Подскажите, что я могу сделать в моей ситуации...
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
@HRAshton
Связь M-M является нарушением третьей нормальной формы БД и не поддерживается самой концепцией реляционных СУБД. Для реализации такого отношения в реляционной БД нужно сделать третью таблицу - вроде Сущность1_Сущность2_Связь - и реализовать отношения Один-ко-многим:
Сущность1 >--- Сущность1_Сущность2_Связь --< Сущность2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы