EntityContainer名称必须是唯一的。(The EntityContainer name must be unique. An EntityContainer with the name &

编程入门 行业动态 更新时间:2024-10-23 14:34:26
EntityContainer名称必须是唯一的。(The EntityContainer name must be unique. An EntityContainer with the name 'Entities' is already defined)

有一点背景:

我有一个具有以下结构的DLL项目:

Rivworks.Model (project) \Negotiation (folder) Model.edmx (model from DB #1) \NegotiationAutos (folder) Model.edmx (model from DB #2)

我已将连接字符串从此项目的app.config移至web.config文件。 它们不在 ConnectionString部分。 相反,我有一个静态类,它消耗了部分web.config,并将它们作为AppSettings [settingName]公开给我的应用程序。

<FeedAutosEntities_connString>metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=db4;Initial Catalog=RivFeeds;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</FeedAutosEntities_connString> <RivWorkEntities_connString>metadata=res://*/NegotiationAutos.NegotiationAutos.csdl|res://*/NegotiationAutos.NegotiationAutos.ssdl|res://*/NegotiationAutos.NegotiationAutos.msl;provider=System.Data.SqlClient;provider connection string='Data Source=db2;Initial Catalog=RivFramework_Dev;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</RivWorkEntities_connString>

我有两个类,每个上下文一个,他们看起来像这样:

namespace RivWorks.Model { public class RivWorksStore { private RivWorks.Model.Negotiation.Entities _dbNegotiation; public RivWorksStore(string connectionString, string metadata, string provider) { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.ConnectionString = connectionString; entityBuilder.Metadata = "res://*/"; // metadata; //entityBuilder.Provider = provider; _dbNegotiation = new RivWorks.Model.Negotiation.Entities(entityBuilder.ConnectionString); } public RivWorks.Model.Negotiation.Entities NegotiationEntities() { return _dbNegotiation; } } } namespace RivWorks.Model { public class FeedStoreReadOnly { private RivWorks.Model.NegotiationAutos.Entities _dbFeed; public FeedStoreReadOnly(string connectionString, string metadata, string provider) { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.ConnectionString = connectionString; entityBuilder.Metadata = "res://*/"; // metadata; //entityBuilder.Provider = provider; _dbFeed = new RivWorks.Model.NegotiationAutos.Entities(entityBuilder.ConnectionString); } public RivWorks.Model.NegotiationAutos.Entities ReadOnlyEntities() { return _dbFeed; } } }

你会注意到MetaData正在被重写成一个简短的版本。

当我在每个类中注释掉该行时,出现此错误:

无法加载指定的元数据资源。

当我在每个班级中留下该行时,出现此错误:

指定的模式无效。 错误:

Negotiation.Model.csdl(3,4):错误0019:EntityContainer名称必须是唯一的。 已经定义了名称为“实体”的EntityContainer。

我知道这很简单,很明显。 任何建议欢迎...

For a little background:

I have a DLL project with the following structure:

Rivworks.Model (project) \Negotiation (folder) Model.edmx (model from DB #1) \NegotiationAutos (folder) Model.edmx (model from DB #2)

I have moved the connection strings from this project's app.config to the web.config file. They are not in the ConnectionString section. Rather, I have a static class that consumes part of the web.config and exposes them to my app as AppSettings.[settingName].

<FeedAutosEntities_connString>metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=db4;Initial Catalog=RivFeeds;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</FeedAutosEntities_connString> <RivWorkEntities_connString>metadata=res://*/NegotiationAutos.NegotiationAutos.csdl|res://*/NegotiationAutos.NegotiationAutos.ssdl|res://*/NegotiationAutos.NegotiationAutos.msl;provider=System.Data.SqlClient;provider connection string='Data Source=db2;Initial Catalog=RivFramework_Dev;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</RivWorkEntities_connString>

I have 2 classes, one for each Context and they look like this:

namespace RivWorks.Model { public class RivWorksStore { private RivWorks.Model.Negotiation.Entities _dbNegotiation; public RivWorksStore(string connectionString, string metadata, string provider) { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.ConnectionString = connectionString; entityBuilder.Metadata = "res://*/"; // metadata; //entityBuilder.Provider = provider; _dbNegotiation = new RivWorks.Model.Negotiation.Entities(entityBuilder.ConnectionString); } public RivWorks.Model.Negotiation.Entities NegotiationEntities() { return _dbNegotiation; } } } namespace RivWorks.Model { public class FeedStoreReadOnly { private RivWorks.Model.NegotiationAutos.Entities _dbFeed; public FeedStoreReadOnly(string connectionString, string metadata, string provider) { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.ConnectionString = connectionString; entityBuilder.Metadata = "res://*/"; // metadata; //entityBuilder.Provider = provider; _dbFeed = new RivWorks.Model.NegotiationAutos.Entities(entityBuilder.ConnectionString); } public RivWorks.Model.NegotiationAutos.Entities ReadOnlyEntities() { return _dbFeed; } } }

You will note that the MetaData is being rewritten to a short version.

When I comment out that line in each class I get this error:

Unable to load the specified metadata resource.

When I leave that line in in each class I get this error:

Schema specified is not valid. Errors:

Negotiation.Model.csdl(3,4) : error 0019: The EntityContainer name must be unique. An EntityContainer with the name 'Entities' is already defined.

I know it is something simple, something obvious. Any suggestions welcome...

最满意答案

您的两个EDMX文件可能具有相同的实体容器名称。 您需要更改(至少)其中一个。

在GUI设计器中,打开模型浏览器。 寻找一个说“EntityContainer:Entities”的节点。 点击它。 在Properties中,将Name改为别的。 保存并重建。

Your two EDMX files probably have the same entity container name. You need to change (at least) one of them.

In the GUI designer, open Model Browser. Look for a node that says "EntityContainer: Entities". Click it. In Properties, change Name to something else. Save and rebuild.

更多推荐

本文发布于:2023-08-05 09:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1431151.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:名称   是唯一   EntityContainer   defined   Entities

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!