多个EF6数据库模型具有相同的实体名称冲突并被覆盖,如何在EF6中设置模型输出目录?

18 浏览
0 Comments

多个EF6数据库模型具有相同的实体名称冲突并被覆盖,如何在EF6中设置模型输出目录?

我正在使用EF6从多个数据库中生成模型(数据库优先)。一些数据库具有相同的表名,因此在生成模型时它们会发生冲突。为了解决命名空间问题,我进入了解决方案资源管理器中的Model.tt文件属性,并更改了Custom Tool Namespace \"enter。然而,这只解决了部分问题,因为当生成额外的模型时,重复的(相同表名).cs文件仍然被放置在项目目录中,同名实体被覆盖。\n如何在EF6中设置模型输出目录?或者有其他解决方法吗?\n编辑:.edmx移动到它自己的文件夹后,当在var objectContext = ((IObjectContextAdapter)this.Ecom).ObjectContext;行访问元数据时,我现在得到{\"Unable to load the specified metadata resource.\"}

0
0 Comments

EF6中出现多个具有相同实体名称的模型冲突并被覆盖的问题的原因是,EF默认将所有模型输出到同一个目录中,当存在多个模型时,会导致文件名冲突,从而导致被覆盖。

解决这个问题的方法如下:

1. 在项目目录中创建一个物理文件夹。

2. 在Solution Explorer中将该文件夹包含到项目中。

3. 将模型文件添加到该目录中(可以复制现有的模型文件,也可以尝试生成一个新的模型文件)。

4. 修改.tt文件的Custom Tool Namespace,确保每个模型都有独立的命名空间。

5. 检查Web.configapp.config文件中的EF连接字符串,确保它们的元数据设置如下所示:res:///Ecom.Ecom.csdl(而不是res:///Ecom.csdl),其中目录结构使用点.而不是斜杠/

通过以上步骤,可以解决EF6中多个模型名称冲突并被覆盖的问题。

0