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?
Najlepiej pokaż swoje modele ale jak dla mnie nie potrzebnie przekombinowane z tym dziedziczeniem
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.
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.
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ć.