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

.net entity-framework orm

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

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

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

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

我觉得这不应该以这种方式表现。在2个不同的命名空间中由2个不同的模型引用所有用户表之后...... VS怎么知道该表被引用了两次?

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

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

一般承认的答案

要在多个模型中重用类型,您需要遵循此博客文章中概述的某些特定步骤 。与许多更高级的Entity Framework功能一样,这可行,但与GUI设计器的工作效果不佳。有关处理大型模型的更多想法,请参阅此简介


热门答案

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

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因