实体框架,获取子类的类型?

时间:2012-05-16 08:21:11

标签: c# entity-framework entity-framework-4

我有一个名为Requestparent的类。 我有3个类叫做requesttype1,requesttype2,requesttype3,所有3个都继承自RequestParent。

在其中一个屏幕中,我需要进行查询以显示网格中所有类型的所有已打开请求

像这样的东西: 已打开日期 - 类型 - 由。打开。

如果我查询requestparent,我就不会得到类型。

另一种解决方案是对子对象进行3次不同的查询。

EF自动创建了一个鉴别器列。

1 个答案:

答案 0 :(得分:2)

如果对基本类型进行选择查询;然后,如果为子表创建连接语句并创建子类型的实体。

因此,即使您对基表进行查询,它也会创建子类型的实体。您可以使用Entity.GetType()语句来获取实体的类型。

例如,假设您有一个名为Base的基本实体和两个名为Derived1和Derived2的派生实体。然后,如果您运行以下select语句;

List<Base> temp = (from o in context.Base
           select o).ToList<Base>();

您将拥有Derived 1和Derived 2类型的实体。只需使用oftype就足以确定实体的类型。例如;

if (temp[0].GetType() == typeof(X))
   {
          .... 
   }