多个DBContext

时间:2016-06-15 13:08:54

标签: c# .net asp.net-mvc entity-framework ado.net

我需要访问两个数据库(未来可能还有更多)。 对于第一个,我创建了一个ADO.NET实体数据模型,然后从中创建了EF Clients生成器。一切都很完美。

对于第二个数据库,我也这样做。没有错误。 但是在两个数据库中我都有一个表Clients,而我遇到的问题是从第二个数据库生成的Clients模型会覆盖第一个数据库中的{{1}}模型,我会遇到错误MVC项目。

我该如何解决这个问题?

编辑: 我已经完成了teo van kot建议(最初在模型中创建文件夹而不是在根文件夹中)并且乍一看似乎工作,但是当我运行应用程序时我得到了这个:

  

指定的架构无效。错误:CLR类型到EDM的映射   type是不明确的,因为多个CLR类型与EDM类型匹配   '客户&#39 ;.以前发现CLR类型   ' test.dbWCF.Clients',新发现的CLR类型   ' test.dbSBD.Clients'

正如@Gert Arnold指出的那样,确实我"固定"这个肮脏的解决方法:

  

解决方法:更改两个相同类之一的属性。

     

EF匹配类名和类属性。所以我改变了一个   其中一个EF对象上的属性名称,错误消失了。

1 个答案:

答案 0 :(得分:2)

使用namespaces

基本上在你的项目中创建2个文件夹ex。 DbContext1DbContext2。然后在单独的文件夹中生成模型,然后VS自动在不同的名称空间中创建它们,以便您可以像下面这样调用它们:

DbContext1.Clients

DbContext2.Clients

请注意,名称空间可能不同,这完全取决于您的项目结构。