如何在同一解决方案中支持多个实体框架模型

时间:2009-10-05 11:57:00

标签: .net entity-framework orm

我已经开始使用实体框架开发应用程序。

我添加了一个名称空间来包含我的所有用户管理代码MyApp.Users,例如,它包含一个标记在命名空间内部的模型,并且只通过接口向系统的其余部分公开功能。这一切都很好。

我现在希望定义另一个名称空间来处理特定的业务逻辑。我希望它包含一个只知道数据库模式的另一个子集的模型,但是这个子集在Users表上重叠。当我尝试访问主项目中的第二个模型时,我收到此错误:

“EdmType无法多次映射到CLR类”

我觉得这不应该这样。在2个不同的命名空间中由2个不同的模型引用所有用户表之后...... VS如何知道该表被引用了两次?

有没有人看过这个问题,也许还想出了如何让同一个表存在于不同的模型中?

或者 - 这是否代表某种我应该避免的实体框架反模式?

2 个答案:

答案 0 :(得分:8)

为了在多个模型中重用类型,您需要遵循一些specific steps outlined in this blog post。与许多更高级的Entity Framework功能一样,这可行,但与GUI设计器的工作效果不佳。另请参阅this intro post以获取有关处理更大模型的更多建议。

答案 1 :(得分:4)

你绝对可以拥有多个模型 - 但不能重叠。错误信息非常清楚 - 如果它们确实重叠,EF将如何知道要映射到哪种CLR类型 - 实际上没有办法告诉它。

在您的情况下,如果需要在其他两个地方使用,您可能会尝试将Users表提取到自己的第三个模型中。

马克