@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. Подскажите, что я могу сделать в моей ситуации...
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@HRAshton
Связь M-M является нарушением третьей нормальной формы БД и не поддерживается самой концепцией реляционных СУБД. Для реализации такого отношения в реляционной БД нужно сделать третью таблицу - вроде Сущность1_Сущность2_Связь - и реализовать отношения Один-ко-многим:
Сущность1 >--- Сущность1_Сущность2_Связь --< Сущность2
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
EBC Group Екатеринбург
До 120 000 руб.
Аппекс Москва
от 100 000 до 220 000 руб.
ЭНН Киев
от 30 000 до 50 000 руб.