来自不同程序集的EF4实体之间的继承

时间:2010-12-09 23:49:58

标签: .net entity-framework

说我正在创建一个公司应用程序。其中一个实体是员工,人力资源部门将基本员工数据存储在此处。然后销售团队想要进入并且他们的操作被放置在不同的组件中。现在,即使是SalesPerson也是一名员工,所以从Employee实体继承是有道理的,但我不知道该怎么做......?

对于我所知道的所有内容,使用多个实体上下文可能是一个坏主意?我愿意接受建议...... :)

2 个答案:

答案 0 :(得分:1)

可以这样做,是的,但不是默认的EF代码生成。

您需要使用 POCO's。

我们的POCO也是单独组装的,工作正常。

使用EF4阅读POCO。您可以使用T4模板生成类,然后将此代码复制并粘贴到不同程序集中的单独文件中(我不知道为什么T4不支持每个实体的文件生成)。

从EF项目添加对POCO程序集的引用,EF将使用基于约定的映射来使用POCO。

我不是100%确定它是否适用于拆分程序集 - 如果程序集的命名空间不同,则可能会遇到问题。 (他们会这样)。

值得一试。首先使用1个装配,使用POCO映射,确保它有效,然后拆开装配并从那里开始。

一帆风顺。 :)

答案 1 :(得分:1)

是的,您可以将POCO实体放入不同的程序集中,并且可以在这些实体之上构建继承,但仍需要单个ObjectContext和EDMX映射文件,它将覆盖所有这些实体。您不能简单地将继承模型拆分为多个映射文件。

IMO唯一的方法是在不同模块的EDMX文件中复制一些映射。因此,例如在您的情况下,HR模块将具有带有Employee映射的EDMX,而Sales模块将具有其自己的具有相同Employee映射的EDMX并继承Sales person映射。