繁体   English   中英

实体框架6-在多个edmx文件中重复使用同一表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM