2011-01-02 11 views
7

Próba implementacji bardzo prostej konfiguracji TPH dla tworzonego systemu, 1 bazy, 2 dziedziczone klasy.Kwerenda dziedziczenia EF TPH

Jednak wszystkie odziedziczone klasy należą do tego samego zestawu encji, więc w pętli przy użyciu ObjectContext mogę uzyskać dostęp do podstawowej klasy abstrakcji. Nie jestem do końca pewien, w jaki sposób uzyskuję elementy, które są konkretnymi klasami? (Przekształciłem go również w POCO).

alt text

Następnie w ciągu mojej aplikacji przy użyciu jednostek:

using (SolEntities sec = new SolEntities()) { 
    Planets = sec.CelestialBodies; 
} 

istnieje jednostka CelestialBodies ustawiony na sec, ale nie Planety/Satelity jak bym się spodziewać.

Nie jestem do końca pewien, co należy zrobić, aby uzyskać do nich dostęp.

Dzięki

Odpowiedz

5

Można użyć metody OfType:

using (SolEntities sec = new SolEntities()) { 
    Planets = sec.CelestialBodies.OfType<Planet>(); 
} 
3

Thomas Levesque opisane OfType metoda rozszerzenie pozwoli odpytywanie tylko pojedynczy odziedziczony typ naprawdę chcesz uzyskać dostęp. Jeśli uzyskasz dostęp do CelestialBodies bezpośrednio, otrzymasz wszystkie elementy. Każda jednostka będzie typu Planet lub Satellite, ale będziesz musiał rzucić je, aby uzyskać dostęp do swoich właściwości.