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

本文关键字:类型 子类 获取 框架 实体 | 更新日期: 2023-09-27 18:34:14

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

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

像这样:打开日期 - 类型 - 打开者。

如果我查询请求父级,我不会得到类型。

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

EF 会自动创建鉴别器列。

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

如果对基类型进行选择查询;则 if 创建子表的联接语句并创建子类型的实体。

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

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

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

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

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