2011-01-02 9 views
7

Tentativo di implementare una configurazione TPH molto semplice per un sistema che sto creando, 1 base, 2 classi ereditate.EF TPH Ereditarietà query

Tuttavia le classi ereditate appartengono tutte allo stesso set di entità, quindi all'interno del mio ObjectContext utilizzando il ciclo, posso accedere solo alla classe astratta di base. Non sono abbastanza sicuro di come ottengo gli elementi che sono lezioni concrete? (L'ho anche convertito in POCO).

alt text

Poi all'interno della mia applicazione utilizzando le Entità:

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

C'è un'entità CelestialBodies impostato sul sec, ma nessun pianeti/satelliti come ci si aspetterebbe.

Non sono sicuro di cosa si debba fare per accedervi.

Grazie

risposta

5

È possibile utilizzare il metodo OfType:

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

Come Thomas Levesque descritto OfType metodo di estensione vi permetterà di query di tipo unico singolo ereditato davvero si vuole accedere. Se accedi direttamente a CelestialBodies, otterrai tutte le entità. Ogni entità sarà di tipo Planet o Satellite ma dovrai eseguirne il cast per accedere alle loro proprietà.

Problemi correlati