EF Core Many2Many

1

Hej, potrzebuje utworzyć taką relacje

Firma
{
    [Key]
    public int Id { get; set; }
    public virtual Pracownik A { get; set; }
    public virtual Pracownik B { get; set; }
    public virtual Pracownik C { get; set; }
}

Pracownik 
{
    [Key]
    public int Id { get; set; }
    public virtual IList<Firma> Firmy { get; set; }
}

I z tego co czytam, to niby EF Core nie obsługuje many-to-many i trzeba napisać sobie jakąś klasę pośrednią typu

public class Book
{
    public int BookId { get; set; }
    public string Title { get; set; }
    public Author Author { get; set; }
    public ICollection<BookCategory> BookCategories { get; set; }
} 

public class Category
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public ICollection<BookCategory> BookCategories { get; set; }
}

public class BookCategory
{
    public int BookId { get; set; }
    public Book Book { get; set; }
    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

Ale gdybym chciał zrobić tak, jak mam w Firma (3 pola z employee, nie jako kolekcja) i pracownik z kolekcją Firm, to musiałbym zrobić z >6 fieldsów?

Pracownik A, Pracownik B, Pracownik C, int pracownikAid, int pracownikBid, int pracownikCid...? brzmi okropnie :P

0

Dobra, robię "dane relacyjne" bez łączenia ich relacjami, bo nie ma ich aż tak dużo :D

To czekamy na Many2Many :-)

0

To już lepiej jak zrobisz sobie jawnie tę klasę łącząca. Co to za problem?

0
cw napisał(a):

tylko się zastanawiam czy samo wprowadzanie relacji many2many w programie nie wskazuje na zły projekt struktury bazy danych

Właśnie natrafiłem na wypowiedź Udiego luźno nawiązującą do relacji many2many, tyle że w kontekście CQRS:

Udi Dahan 2009, Clarified CQRS

Do we really need a collection of orders on the customer entity? In what command would we need to navigate that collection? In fact, what kind of command would need any one-to-many relationship? And if that’s the case for one-to-many, many-to-many would definitely be out as well. I mean, most commands only contain one or two IDs in them anyway.

1 użytkowników online, w tym zalogowanych: 0, gości: 1