EF zapisanie do tabeli która dziedziczy po innej

0

Cześć,
Mam dwie tabele Kursant i ZaakceptowanyKursant, ZaakceptowanyKursant dziedziczy po Kursant i ma pola ID, KursantId, OcenaKoncowa. Gdy chcę dodać do tabeli ZaakceptowanyKursant jakiegoś kursanta to niestety, ale wywala błąd, że brakuje wymaganych pól z tabeli Kursant. Czy ktoś może mnie nakierować jak mogę dodać tylko KursantId i OcenaKoncowa do tabeli ZaakceptowanyKursant?

0

Najlepiej pokaż swoje modele ale jak dla mnie nie potrzebnie przekombinowane z tym dziedziczeniem

2

Nie ma czegoś takiego jak dziedziczenie tabel. I jeśli używasz ORMa, to przestań w ogóle myśleć w kategoriach tabel oraz ID, skup się na obiektach. Jeśli chcesz zapisać hierarchę klas w bazie, to poprawnie skonfigurowany ORM będzie wiedział jak to zapisać.

I ogólnie, to wygląda raczej na to, że powinieneś mieć tu kompozycję, np. klasę OcenaKursu powiązaną z Kursantem.

0

Mieszasz modele. Model relacyjny i obiektowy to dwie różne rzeczy, których nie da się ożenić. Co z tego wynika? Nie ma czegoś takiego jak dziedziczenie tabel w relacyjnej bazie danych. Wszystkich kursantów powinieneś mieć w jednej tabeli. W tej tabeli powinny też być pola określające ich pewne cechy, jak np. pole bitowe w stylu "is_accepted".
Później na poziomie ORMa możesz się bawić w dziedziczenia, chociaż przypominam - model relacyjny i obiektowy to dwie różne rzeczy, więc Twój model też powinien być raczej jeden z polem boolowym IsAccepted.

2
Juhas napisał(a):

Mieszasz modele. Model relacyjny i obiektowy to dwie różne rzeczy, których nie da się ożenić.

Da się - do tego właśnie służą ORMy. :) ORM może skonwertować hierarchię klas do zestawu tabel (albo nawet jednej) w bazie danych, są na to co najmniej trzy sposoby. Tylko to się konfiguruje po stronie ORM i nie przejmuje się potem jak to wygląda w tabelach, nie wstawia się też rekordów do tabeli lecz każe zapisać ORMowi obiekt odpowiedniej klasy on już wie w jakich tabelach ma go umieścić.

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