c# – Entity Framework与来自不同数据库的相同表名冲突

我在Visual Studio 2012(C#)中使用Entity Framework 4和MVC 3.我先使用数据库;有两个独立的数据库,每个数据库都有自己的命名空间和两个独立的edmx文件.每个数据库都有一个具有相同名称和字段(但内容不同)的表.当我添...

我在Visual Studio 2012(C#)中使用Entity Framework 4和MVC 3.

我先使用数据库;有两个独立的数据库,每个数据库都有自己的命名空间和两个独立的edmx文件.每个数据库都有一个具有相同名称和字段(但内容不同)的表.当我添加第二个表时,我开始遇到编译错误.

Ambiguity between 'Interface.CodeFormStatus.FormStatusCodeID' 
and 'Interface.CodeFormStatus.FormStatusCodeID' 

似乎有一些复杂的解决方法,或者我可以重命名其中一个表.是不是一个简单的解决方案,因为这必须是一个相当普遍的问题.

解决方法:

我遇到了一个情况,我有两个数据库(一个是另一个的旧版本),我需要将它们集成到一个项目中.当然,几乎每个名字都有冲突.

我为每个数据库创建了两个独立的edmx文件,为了清楚起见,将每个文件放在自己的命名空间中.然后,我编辑了每个实体名称,以反映它来自哪个数据库 – (例如,“活动”,两者都变成了“v13Activities”和“v14Activities”).

对于要在两个数据库之间进行镜像的操作,我编写了一个包含两个上下文的包装器.这使我的代码重复性降低,同步问题也减少了.

希望这种方法可以帮助其他人 – 这似乎是一个模糊的问题,这个答案是谷歌的最佳结果之一!

更新:在EF 6.1中,还有另一种解决方案.你可以使用“冲突”名称,并在使用“Code First From Database” option时用简单的命名空间将它们分开.我会提倡这个解决方案,就像旧的XML .edmx风格is going to be phased out starting in EF Core一样.

本文标题为:c# – Entity Framework与来自不同数据库的相同表名冲突

基础教程推荐