实体框架6 - 在多个edmx文件中重用相同的表

时间:2015-09-23 21:16:03

标签: c# entity-framework edmx ef-database-first

我的任务是升级我们的软件以使用EF6。以前它使用EF4和amp;的组合。 5.

我们使用数据库第一种方法。代码更改后,升级顺利进行,但在运行应用程序并执行查询后,将引发以下错误。

  

指定的架构无效。错误:

     

CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型'tblAccountMaintenance'匹配。

     

以前发现CLR类型'DALUsers.StatusDB.tblAccountMaintenance',新发现CLR类型'DALUsers.AccountsDB.tblAccountMaintenance'。

问题中的课程tblAccountMaintenance是在多个.tt文件中生成的。这些类是对同一个表的引用,仅在不同的.edmx文件中引用。

在这种情况下,简单地删除其中一个引用并不是一个好选择,因为我们使用了与其他几个表类似的策略,并且需要数千行重写代码。

在EF6中我需要做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:0)

事实证明问题(使用相同的表,在同一个项目中的多个bundledStream文件中具有相同的名称)与var Q = require('q'); gulp.task('scripts', ['angular', 'views-js'], function () { var bundledStream = through(); var deferred = Q.defer(); bundledStream .pipe(source('app.js')) .pipe(buffer()) .pipe(debug()) .pipe(uglify()) .on('error', gutil.log) .pipe(sourcemaps.write(paths.target)) .pipe(gulp.dest(paths.target)) .on('end', function() { deferred.resolve(); }); .... return deferred.promise; 文件包含新对象的事实相关派生自edmx - 这是一个特定于.tt的限制/约束。

我下载了这个插件: https://visualstudiogallery.msdn.microsoft.com/66612113-549c-4a9e-a14a-f629ceb3f89a

这允许我创建dbContext dbContext来自EF6而不具有此约束的文件。它也使我不必更新我的所有代码以使用更新的.tt方法。

作为对观看此内容的其他人的说明 - 如果您开始使用较新的项目或者EnityObject文件/表格数量较少,那么这可能不是最好的答案,因为dbContext不够健壮作为edmx,但这是一个很好的创可贴修复 - 特别是如果你像我一样,并且在EF7出来时必须完全重写。