如何使用继承与实体框架4确定实体的子类型?

Kal*_*exx 3 inheritance entity-framework entity-framework-4

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

我正在做一个模型优先的方法,我的Person实体有两个子类型实体,Employee和Client.EF正确使用每种类型的表方法,但我似乎无法弄清楚如何确定特定对象的Person类型.

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

var people = from p in entities.Person select p;
return people.ToList<Person>();
Run Code Online (Sandbox Code Playgroud)

在我从中形成的列表中,我关心的是Id字段,所以我不想实际查询所有子类型表(这是一个带链接的网页列表,所以我需要的是名称和ID,所有在人员表中).

但是,我希望使用这一个查询形成不同的列表,每个类型的人一个(所以一个列表用于客户端,另一个列表用于员工).

问题是如果我有一个Person实体,我看不到任何方法来确定该实体是客户端还是员工而不直接查询客户端或员工表.如何在不执行大量额外数据库查询的情况下轻松确定实体的子类型?

Ian*_*cer 5

.OfType<Client>()在查询中使用以获取客户端.见OfType.

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

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

BTW为什么不呢entities.People?你没有选择复数选项吗?