2011-01-02 19 views
7

Bir sistem için çok basit bir TPH kurulumu uygulamaya çalışıyorum, 1 temel, 2 miras sınıfı.EF TPH Kalıtım Sorgusu

Ancak, miras alınan sınıfların hepsi aynı varlık kümesine aittir, bu yüzden benim ObjectContext kullanma döngüsümde yalnızca temel özet sınıfına erişebilirim. Somut sınıflar olan öğeleri nasıl aldığımdan emin değilim? (Ayrıca POCO kullanarak dönüştürdüm).

alt text

Sonra Varlıkları kullanarak uygulama içinde:

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

sec ayarlanmış bir CelestialBodies varlık var, ancak hiçbir Gezegenler/Uydular Ben beklediğiniz gibi.

Onlara erişmek için ne yapılması gerektiğinden emin değilsiniz. Thomas Levesque OfType uzatma yöntemi gerçekten erişmek istediğiniz sadece tek bir kalıtsal tip sorgulama sağlayacak açıklandığı gibi

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

cevap

5

Sen OfType yöntemi kullanabilirsiniz. Doğrudan CelestialBodies'a erişirseniz, tüm varlıkları alırsınız. Her varlık, Planet veya Satellite türünde olacaktır, ancak özelliklerine erişmek için bunları yayınlamanız gerekir.

3

:

Teşekkür