为工厂模式使用创建多个Entity Framework EDMX文件

时间:2012-12-11 10:49:26

标签: c# entity-framework entity-framework-5

人们正在使用Entity框架做一些聪明的事情,但我认为我做的事情非常简单,似乎无法实现。

我有两个独立的数据库。数据库A和数据库B.

我需要分别为这些数据库创建上下文,所以我想要一个工厂模式,它将为我实例化上下文。我正在尝试使用数据库第一种方法。

我通过Nuget包管理器引用了Entity Framework,并使用Visual Studio创建了一个新项。唯一可以选择EDMX扩展名的项目是“ADO.NET实体数据模型”,所以我已经选择了这个并选择了数据库A.

已生成EDMX文件,我可以看到我的实体。在以编程方式访问它们时,实体已被转储到默认命名空间中。这意味着我通过访问my.namespace.datasource.TableA来获得实体的智能感知。

如果我现在在同一区域创建另一个EDMX文件,相同的entites将被转储到同一个地方,我会发生冲突。

我得到的错误的一个例子是:

“类型'my.namespace.datasource.Entities'已包含'TableA'的定义”

这是为什么?为什么不为实体将驻留在其中的EDMX文件创建默认命名空间?如何让多个EDMX文件协调工作并在需要时提供单独的上下文?

任何帮助都表示赞赏!

干杯,

卡尔。

1 个答案:

答案 0 :(得分:3)

  • 选项1.在解决方案资源管理器中选择模型项目项,转到项目 属性,将属性“自定义工具命名空间”设置为首选 值。生成的代码将放在您设置的命名空间中。
  • 选项2.创建两个单独的文件夹并将一个模型放入 第一个文件夹,一个 - 进入第二个文件夹。
  • 选项3.将模型放入单独的项目中。

注意即可。 如果您正在使用VS2010和任何T4生成器(例如,DbContext生成器),您应该:

  • 通过清除EDMX项目项的“自定义工具”属性来关闭默认代码生成;
  • 为T4项目项目设置“自定义工具命名空间”(例如Model1.ttModel1.Context.tt)。