【问题标题】:How do you determine subtype of an entity using Inheritance with Entity Framework 4?您如何使用 Entity Framework 4 的继承来确定实体的子类型?
【发布时间】:2010-05-11 22:24:40
【问题描述】:

我刚刚开始第一次使用 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。如何在不执行大量额外数据库查询的情况下轻松确定实体的子类型?

【问题讨论】:

    标签: entity-framework inheritance entity-framework-4


    【解决方案1】:

    在查询中使用.OfType&lt;Client&gt;() 来获取客户端。见OfType

    例如entities.Person.OfType&lt;Client&gt;() ...

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

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

    【讨论】:

    • 太好了,不知道“is”检查在那种情况下会起作用!谢谢!作为旁注,我没有做复数,因为这只是一个简单的例子,我可以不用描述我所有实体的含义,我不知道它会正确地复数Person to People :)跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2017-02-09
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多