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


我已经开始使用Entity Framework开发应用程序。

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

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

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

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

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

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


13134
2017-10-05 11:56


起源



答案:


为了在多个模型中重用类型,您需要遵循一些 本博文中概述的具体步骤。与许多更高级的Entity Framework功能一样,这可行,但与GUI设计器的工作效果不佳。也可以看看 这个简介 有关处理大型模型的更多想法。


8
2017-10-05 13:01



博客帖子的链接已损坏 - Brian Leeming


答案:


为了在多个模型中重用类型,您需要遵循一些 本博文中概述的具体步骤。与许多更高级的Entity Framework功能一样,这可行,但与GUI设计器的工作效果不佳。也可以看看 这个简介 有关处理大型模型的更多想法。


8
2017-10-05 13:01



博客帖子的链接已损坏 - Brian Leeming


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

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

渣子


4
2017-10-05 11:59