EF - typ obiektu + Id obiektu danego typu

1

Cześć,
Mam klasę Pracownik, Kontrahent oraz Dokument. Klasa Dokument powinna być powiązana z Pracownikiem lub Kontrahentem w zależności kto został wskazany.
W jaki sposób zrobić, w EF aby Tabela Dokument zawierała jedną kolumnę z typem obiektu (1 gdy Pracownik 2 gdy Kontrahent) oraz jedną kolumnę z Id Pracownika lub Kontrahenta - w zależności jaki typ obiektu jest powiązany z danym rekordem?

0

Ja bym sympatyzował ze stringiem.

Część obiektowa (zabezpiecz sobie na null'e )

class DocumentParent { 
  DocumentParent( IParent ... );

   string ParentType { 
       get {
          return parent.GetType().Name;
       }
   }
   int ParentId {
      get {
        return parent.ID
        }
   }
  }

co by w bazie skutkowało parą "Kontrahent ", 2317

I tu mam lukę, mało wiem o EF - grałem ten trick w innych frameworkach. Jakoś trzeba spowodować, aby taki "compuond" czy "emebedded" object zadziałał.

DISCLAIMER:
oczywiście wiesz, że cała ochrona referencji ze strony bazy danych itd ... idzie się kochać ?
Możesz skasować "klucz obcy" bez najmniejszego ostrzeżenia.

0

Czemu potrzebujesz kolumny z typem obiektu?

Mając w klasie Dokument właściwość Id do Pracownik\Kontrahent możesz utworzyć relację One-to-One.
Następnie pobierając Dokument z bazy zaciągniesz też odpowiedni obiekt Pracownik\Kontrahent i w logice aplikacji zrobisz z tym co chcesz.
Może rozwiń swój problem to coś doradzimy więcej.

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