[英]Entity Framework 6 - reuse same table in multiple edmx files
我的任务是升级软件以使用EF6。 以前它是结合使用EF4和5。
我们使用数据库优先方法。 升级进行得很顺利,但代码进行了更改,但是在运行应用程序并执行查询后,将引发以下错误。
指定的架构无效。 错误:
由于多个CLR类型与EDM类型“ tblAccountMaintenance”匹配,因此CLR类型到EDM类型的映射是不明确的。
先前找到的CLR类型为“ DALUsers.StatusDB.tblAccountMaintenance”,新近发现的CLR类型为“ DALUsers.AccountsDB.tblAccountMaintenance”。
有问题的类tblAccountMaintenance
是在多个.tt
文件中生成的。 这些类是对同一表的引用,只是在不同的.edmx
文件中引用。
在这种情况下,简单地删除一个引用不是一个好的选择,因为我们对其他几个表使用了类似的策略,并且需要数千行重写代码。
我需要做什么才能在EF6中解决此问题?
因此,事实证明,问题所在(在同一项目中的多个edmx
文件中使用相同的表,并且使用相同的名称)与.tt
文件包含从dbContext
派生的新对象有关,并且这是一个局限性/特定于dbContext
约束。
我下载了此插件: https : //visualstudiogallery.msdn.microsoft.com/66612113-549c-4a9e-a14a-f629ceb3f89a
这让我创造EF6
.tt
文件派生自EnityObject
代替它没有这个约束。 它还使得它不必更新所有代码即可使用更新的dbContext
方法,这是一个加号。
作为其他查看此内容的注意事项-如果您从一个较新的项目开始或拥有少量edmx
文件/表,这可能不是最好的答案,因为EntityObject
不如dbContext
健壮,但这是一个不错的创可贴解决-特别是如果您像我一样,并且在EF7推出时必须完全重写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.