2

人们正在使用 Entity 框架做一些聪明的事情,但我认为我正在做一些非常简单的事情,而且似乎无法让它继续下去。

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

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

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

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

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

我得到的错误示例是:

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

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

任何帮助表示赞赏!

干杯,

卡尔。

4

1 回答 1

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

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

  • 通过清除 EDMX 项目项的“自定义工具”属性来关闭默认代码生成;
  • Model1.tt为 T4 项目项(例如和Model1.Context.tt)设置“自定义工具命名空间” 。
于 2012-12-11T10:58:50.960 回答