EF 7 First Code – relacja wiele do wielu. DSP16 – część 8

Moim zdaniem ważnym elementem w projekcie jest poprawnie zaprojektowana baza danych. W poście dotyczącym EF7 First Code pokazałem diagram klas:

DSP16-5.1

Jeżeli się nie mylę to relacjami wiele do wielu EF6 radził sobie bez problemu. Mogłem napisać kod:

A później poprosić EF o stworzenie dla mnie tabel w bazie danych. EF radził sobie z tym zadaniem bez problemu.

Jednak chcąc użyć EF7 spawy mają się nieco inaczej. Kiedy napisałem taki kod dla klas Player oraz Tournament i wpisałem komendę dnx ef migrations add initial otrzymałem komunikat:

The navigation ‚Tournaments’ on entity type ‚Player’ not not been added to the model, or ignored, or target entityType ignored.

StackOverFlow przyszedł z pomocą. Musiałem wprowadzić klasę pośrednią: PlayerTournament. Tak jakbym projektował bazę danych zgodnie ze sztuką: relacje wiele do wielu potrzebują dodatkowej tabeli.

Dodatkowo w klasie z moim DBContextem musiałem dodać jedną linijkę:

Linijka ta tworzy w bazie danych klucze obce dla tabeli PlayerTournament. W konsoli wykonałem polecenia: dnx ef migrations add initial i dnx ef database update i baza danych wygląda w następujący sposób:DSP16-8.2

 

Do mojego projektu diagram klas wygląda w następujący sposób:

DSP16-8.1

Jednak tym razem nie używam klasy PlayerTournament. Zamiast tego mam klasę Result, która zawiera dodatkowe informacje porównując z PlayerTournament.

Warto było stworzyć tą dodatkową tabelę, bo mam gdzie przechowywać dodatkowe, przydatne informacje :).

Powered by: Wordpress