【发布时间】:2015-12-21 08:45:41
【问题描述】:
我的任务是升级我们的软件以使用 EF6。以前它使用的是 EF4 和 5 的组合。
我们使用数据库优先的方法。就代码更改而言,升级进展顺利,但在运行应用程序并进行查询后,会引发以下错误。
指定的架构无效。错误:
CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型“tblAccountMaintenance”匹配。
以前找到的 CLR 类型“DALUsers.StatusDB.tblAccountMaintenance”,新找到的 CLR 类型“DALUsers.AccountsDB.tblAccountMaintenance”。
问题中的类tblAccountMaintenance 是在多个.tt 文件中生成的。这些类是对同一个表的引用,只是在不同的.edmx 文件中引用。
在这种情况下,简单地删除其中一个引用并不是一个好的选择,因为我们对其他几个表使用了类似的策略,并且需要重写数千行代码。
我需要做什么才能在 EF6 中解决此问题?
【问题讨论】:
-
您是否尝试过将 edmx 文件放在不同的命名空间中?
-
是的,不同的命名空间
-
需要修改您的 T4 模板文件,而不仅仅是通过定位
edmx文件。 除非您创建新的 edmx 文件(模型)并将它们最初放在不同的文件夹中。 -
每个
edmx文件都在一个单独的文件夹中;在迁移过程中,我删除了所有现有的.tt文件并从设计器中重新生成它们。 (Add Code Generation Items...)。
标签: c# entity-framework edmx ef-database-first