2

我有一个名为 Requestparent 的课程。我有 3 个类,分别称为 requesttype1、requesttype2、requesttype3,所有 3 个类都继承自 RequestParent。

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

类似于:打开日期-类型-打开者。

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

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

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

4

1 回答 1

2

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

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

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

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

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

if (temp[0].GetType() == typeof(X))
   {
          .... 
   }
于 2012-05-16T08:33:13.417 回答