2009-10-05 56 views
11

我已经开始使用实体框架开发应用程序。如何在同一解决方案中支持多个实体框架模型

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

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

“的EdmType不能被映射到CLR类多次”

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

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

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

回答

8

为了重复使用在多个模型类型,您需要遵循一些specific steps outlined in this blog post。像许多更先进的实体框架功能一样,这可以起作用,但对于GUI设计者来说效果不佳。有关处理较大型号的更多想法,另请参阅this intro post

+2

博客文章的链接已损坏 – 2016-11-02 13:58:47

4

你可以肯定有多个模型 - 但他们不能重叠。错误信息非常清晰 - 如果它们确实重叠,EF如何知道要映射到哪种CLR类型 - 实际上没有办法说明这一点。

对于您的情况,如果需要在另外两个位置使用,则可以尝试将Users表提取为其自己的第三个模型。

马克

相关问题