Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何使用实体框架4的继承来确定实体的子类型?_Entity Framework_Inheritance_Entity Framework 4 - Fatal编程技术网

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

Entity framework 如何使用实体框架4的继承来确定实体的子类型?,entity-framework,inheritance,entity-framework-4,Entity Framework,Inheritance,Entity Framework 4,我刚刚开始有史以来第一次使用EntityFramework4。到目前为止,我很喜欢它,但对于如何正确地进行继承,我有点困惑 我正在使用模型优先的方法,我的Person实体有两个子类型实体,Employee和Client。EF正确地使用了每种类型表的方法,但是我似乎不知道如何确定特定对象是什么类型的人 例如,如果我做了类似的事情 var people = from p in entities.Person select p; return people.ToList<Person>()

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

我正在使用模型优先的方法,我的Person实体有两个子类型实体,Employee和Client。EF正确地使用了每种类型表的方法,但是我似乎不知道如何确定特定对象是什么类型的人

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

var people = from p in entities.Person select p;
return people.ToList<Person>();
var people=来自实体中的p。人员选择p;
返回人。ToList();
在我由此形成的列表中,我只关心Id字段,所以我不想实际查询所有子类型表(这是一个带有链接的网页列表,所以我只需要姓名和Id,全部在Persons表中)

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

问题是,如果我有一个Person实体,如果不直接查询Client或Employee表,我就无法确定该实体是客户还是员工。如何在不执行大量其他数据库查询的情况下轻松确定实体的子类型?

在查询中使用
.OfType()
仅获取客户端。看

e、 g.
实体.Person.OfType()

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

顺便说一句,为什么它不是实体。人?您没有选择多元化选项吗?

太好了,不知道“是”检查在这种情况下会起作用!谢谢作为旁注,我没有做多元化,因为这只是一个简单的例子,我不需要描述我所有的实体都意味着什么,我也不知道它会正确地将人与人多元化:)