Der EntityContainer-Name muss eindeutig sein. Ein EntityContainer mit dem Namen 'Entities' ist bereits definiert
Für einen kleinen Hintergrund:
Ich habe ein DLL-Projekt mit folgender Struktur:
Rivworks.Model (project)
\Negotiation (folder)
Model.edmx (model from DB #1)
\NegotiationAutos (folder)
Model.edmx (model from DB #2)
Ich habe die Verbindungszeichenfolgen aus der app.config dieses Projekts in die web.config-Datei verschoben. Sie sindnicht im Abschnitt ConnectionString. Ich habe stattdessen eine statische Klasse, die einen Teil der Datei web.config verwendet und diese als AppSettings. [Einstellungsname] für meine App verfügbar macht.
<FeedAutosEntities_connString>metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=db4;Initial Catalog=RivFeeds;Persist Security Info=True;User ID=****;Password="****";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="****";MultipleActiveResultSets=True'</RivWorkEntities_connString>
Ich habe 2 Klassen, eine für jeden Kontext und sie sehen so aus:
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;
}
}
}
Sie werden feststellen, dass die Metadaten in eine Kurzversion umgeschrieben werden.
Wenn ich diese Zeile in jeder Klasse auskommentiere, erhalte ich folgende Fehlermeldung:
Die angegebene Metadatenressource kann nicht geladen werden.
Wenn ich diese Zeile in jeder Klasse lasse, erhalte ich den folgenden Fehler:
Das angegebene Schema ist ungültig. Fehler:
Negotiation.Model.csdl (3,4): Fehler 0019: Der EntityContainer-Name muss eindeutig sein. Ein EntityContainer mit dem Namen 'Entities' ist bereits definiert.
Ich weiß, es ist etwas Einfaches, etwas Offensichtliches. Anregungen willkommen ...