我刚刚开始第一次使用 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/