实体框架 - 在通过主键查询基础时获取派生类型?

时间:2014-01-13 21:03:29

标签: entity-framework

我已经阅读了很多关于此的文章,并没有找到明确的答案。这就是我想要做的事情:

我有一个基本实体(baseEntity)和两个继承的实体(House)和(Lizard)。我有另一个实体(myEntity)和基本实体与myEntity之间的关联,其中myEntity上有一个返回基本实体的导航属性。我想要做的就是以某种方式获得导航属性指向的派生实体类型的对象。例如,如果我遵循这条路径,我想:myEntity>导航属性“baseEntity”>得到House或Lizard,取决于主键存在哪一个,因为两个实体类型共享一个实际存在于baseEntity中的主键值。

只是要清楚 - 我知道它可以告诉派生类的类型,因为当我从find操作返回baseEntity的对象,或者跟随导航属性时,我可以看看.GetType()on那个对象,它会说Lizard_C4BDJSNBI498348FHDJ .....或House ....等等。如果我在该对象上执行.GetType()。BaseType,它会直接说ModelNamespace.Lizard或ModelNamespace.House。

有什么想法吗?

Entity Data Model Designer

有人在这吗?

1 个答案:

答案 0 :(得分:0)

var house = myEntity.baseEntity as House;
var lizard = myEntity.baseEntity as Lizard;

if( null != house )
{
    // is a house
}
else if( null != lizard )
{
    // is a lizard
}
else
{
    // is neither a house nor a lizard
}

if( myEntity.baseEntity is House )
{
    // is a house
}
else if( myEntity.baseEntity is Lizard )
{
    // is a lizard
}