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=&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>

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 ...

Antworten auf die Frage(12)

Ihre Antwort auf die Frage