EF TPH继承查询

时间:2011-01-02 13:36:02

标签: c# entity-framework c#-4.0 tph

尝试为我正在制作的系统实现一个非常简单的TPH设置,1个基础,2个继承类。

但是继承的类都属于同一个实体集,所以在我的ObjectContext中使用循环,我只能访问基本的抽象类。我不太确定我是如何获得具体类的元素的? (我也将它转换为使用POCO)。

alt text

然后在我的应用程序中使用实体:

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

sec上设置了CelestialBodies实体,但没有像我期望的那样设置行星/卫星。

不太确定要访问它们需要做什么。

由于

2 个答案:

答案 0 :(得分:5)

您可以使用OfType方法:

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

答案 1 :(得分:3)

正如Thomas Levesque所描述的那样,OfType扩展方法将允许您仅查询您真正想要访问的单个继承类型。如果您直接访问CelestialBodies,您将获得所有实体。每个实体都属于PlanetSatellite类型,但您必须将它们转换为访问其属性。