Entity framework 4 在多个edmx文件之间共享模型(实体框架4.0)

Entity framework 4 在多个edmx文件之间共享模型(实体框架4.0),entity-framework-4,Entity Framework 4,我正在寻找解决我所面临的问题的方法,也许很多人都必须面对这个问题 目前,我正在开发一个包含近400个表的应用程序。 应用程序由七个类库项目(StudentInfo、library、Fees等)组成,每个项目都有自己的.edmx文件(由50个表组成),代码生成策略=默认值和 引用类库项目的单个web应用程序项目。 每个类库项目中大约有15个常用表,它们将出现在.edmx文件中。类/模型的命名空间在所有.edmx文件中都是相同的(校园) 我创建了一个部分类,即School(commom表/模型之一)

我正在寻找解决我所面临的问题的方法,也许很多人都必须面对这个问题

目前,我正在开发一个包含近400个表的应用程序。 应用程序由七个类库项目(StudentInfo、library、Fees等)组成,每个项目都有自己的.edmx文件(由50个表组成),代码生成策略=默认值和 引用类库项目的单个web应用程序项目。
每个类库项目中大约有15个常用表,它们将出现在.edmx文件中。类/模型的命名空间在所有.edmx文件中都是相同的(校园)

我创建了一个部分类,即School(commom表/模型之一),其中包含一些方法。

但是,会引发以下编译时错误 类型“Campus.School”存在于“D:\Project\Campus\Campus学生”和“D:\Project\Campus\CampusLibrary\bin\Debug\CampusLibrary.dll”中

其他成员提出的解决方案
1) 每个.edmx文件都有单独的名称空间。
2) 对模型使用不同的名称,即学生学校、图书馆学校等。
这两种解决方案都会迫使我在每个类库项目中复制公共类及其方法。
有人能帮我吗?

如果您正在使用POCO T4模板生成当前实体,那么有一种方法。EF中的POCO可以是任何命名空间中的任何类,这些类与EDMX中的实体具有相同的名称,并且所有属性与EDMX中的实体具有相同的名称(包括getter和setter的相同类型和可访问性)

在另一个程序集中定义15个共享类(您必须遵循上述POCO规则),并由所有库项目引用它。拥有此程序集后,请创建自己版本的POCO T4模板,该模板不会为这些共享实体创建新的类文件,而是使用引用程序集中的类


另一个选项是手动创建和维护所有这些400个类和EF上下文类型。如果您只使用代码映射(也称为代码优先),您将不会遇到这些问题。

谢谢您的回复。亲爱的Ladislav,您是否有示例应用程序或资源链接可以帮助我实现它。实际上,我无法将您的建议应用于创建POCO T4模板,该模板不会为这些共享实体创建新的类文件,而是使用引用程序集中的类,因为我对EFI不是很精通。对不起,我没有示例。您只需要创建实体名称的静态硬编码集合,而不能创建实体名称。此集合将直接在模板中定义。在为实体生成代码的模板部分中,验证集合中不存在实体名称。您还需要修改用于在其他实体中生成导航属性的代码,以使用引用程序集的正确类型。尊敬的ladislav,我已决定将所有类库项目合并为一个,其中包含来自相应类库的多个edmx文件。我使用了ADO.Net POCO实体生成器并编辑了模板,该模板将阻止为其他.edmx上下文生成公共实体的属性。我将所有类库合并为一个类库的主要原因是不能跨程序集跨分部类。无论如何,谢谢你的帮助。如果你想拥有共享类,你当然不能通过其他组件的部分零件来定义它们的附加零件。必须在共享程序集中定义具有所有属性和方法的整个类。我想问题是,您是否真的需要在所有edmx文件中提供这15个表。为了消除冗余,您不能逻辑地拆分模型吗?