我已经开始使用实体框架开发应用程序。
我添加了一个名称空间来包含我的所有用户管理代码MyApp.Users,例如,它包含一个标记在命名空间内部的模型,并且只通过接口向系统的其余部分公开功能。这一切都很好。
我现在希望定义另一个名称空间来处理特定的业务逻辑。我希望它包含一个只知道数据库模式的另一个子集的模型,但是这个子集在Users表上重叠。当我尝试访问主项目中的第二个模型时,我收到此错误:
“EdmType无法多次映射到CLR类”
我觉得这不应该这样。在2个不同的命名空间中由2个不同的模型引用所有用户表之后...... VS如何知道该表被引用了两次?
有没有人看过这个问题,也许还想出了如何让同一个表存在于不同的模型中?
或者 - 这是否代表某种我应该避免的实体框架反模式?
答案 0 :(得分:8)
为了在多个模型中重用类型,您需要遵循一些specific steps outlined in this blog post。与许多更高级的Entity Framework功能一样,这可行,但与GUI设计器的工作效果不佳。另请参阅this intro post以获取有关处理更大模型的更多建议。
答案 1 :(得分:4)
你绝对可以拥有多个模型 - 但不能重叠。错误信息非常清楚 - 如果它们确实重叠,EF将如何知道要映射到哪种CLR类型 - 实际上没有办法告诉它。
在您的情况下,如果需要在其他两个地方使用,您可能会尝试将Users
表提取到自己的第三个模型中。
马克