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

11

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

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

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

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

我觉得这不应该是这样的行为。毕竟,用户表在2个不同的命名空间中的2个不同的模型中被引用... VS如何知道表被引用了两次?

是否有人遇到过这个问题,或者已经找出了如何允许同一张表存在于不同的模型中的解决方法?

或者 - 这代表了某种我应该避免的Entity Framework反模式吗?

2个回答

8
为了在多个模型中重复使用类型,您需要按照此博客文章中概述的一些特定步骤进行操作。像许多更高级的Entity Framework功能一样,这种方法可以实现,但与GUI设计师不太兼容。另请参见此介绍文章以获取有关处理较大模型的更多想法。

2
博客文章的链接已经失效。 - Brian Leeming

4

您肯定可以有多个模型,但它们不能重叠。 错误信息非常清晰 - 如果它们重叠,EF如何知道映射到哪个CLR类型 - 实际上没有办法告诉它。

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

马克


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接