entity-framework - 如何使用 Entity Framework 4 继承来确定实体的子类型?

标签 entity-framework inheritance entity-framework-4

我刚刚开始第一次使用 Entity Framework 4。到目前为止,我很喜欢它,但我对如何正确地进行继承有点困惑。

我采用模型优先的方法,我的 Person 实体包含两个子类型实体,Employee 和 Client。 EF 正确地使用了每种类型的表方法,但是我似乎无法弄清楚如何确定特定对象的 Person 类型。

例如,如果我做类似的事情

var people = from p in entities.Person select p;
return people.ToList<Person>();

在我由此形成的列表中,我只关心 Id 字段,所以我不想实际查询所有子类型表(这是一个带有链接的网页列表,所以我只需要名称和Id,都在 Persons 表中)。

但是,我想使用这个查询形成不同的列表,一个用于每种类型的人(因此一个列表用于客户,另一个用于员工)。

问题是如果我有一个 Person 实体,我无法在不直接查询 Client 或 Employee 表的情况下确定该实体是 Client 还是 Employee。如何在不执行一堆额外的数据库查询的情况下轻松确定实体的子类型?

最佳答案

使用 .OfType<Client>()在您的查询中只获取客户。参见 OfType .

例如entities.Person.OfType<Client>() ...

使用 is测试 Person 对象是否是特定的子类,例如if (p is Employee) ...

顺便说一句,为什么不是 entities.People ?您没有选择复数选项吗?

关于entity-framework - 如何使用 Entity Framework 4 继承来确定实体的子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814860/

相关文章:

c++ - 在没有 const 的情况下将 shared_ptr<Derived>& 作为 shared_ptr<Base>& 传递时出错

c# - DbContext 和 ObjectContext 之间不同的 setter 行为

c# - 在 C# 中创建接口(interface)的对象

c# - 无法在 Entity Framework 中使用 SQL 查询获取数据

entity-framework - 将属性映射到 Entity Framework CTP5 中的(不同命名的)外键字段

c# - 我怎样才能记住 super 调用父级?

entity-framework - Entity Framework ObjectContext 是否正确实现了工作单元模式?

mysql - 查询求和两列的问题

c# - 在 Startup.cs 中添加 DbContextOptions 而不是注册数据存储

C++ 符号引用错误