Warum benötigt eine Entity Framework-Verbindung eine Metadateneigenschaft?

Wechselte ich meine DAL aus der Verwendung von LINQ über Entity Framework. Da meine Anwendung eine Verbindung zu verschiedenen Datenbanken je nach den aktuellen Benutzer, muss ich dynamisch erstellen der DataContext zur Laufzeit und pass in die entsprechende Verbindungszeichenfolge. Jedoch, als ich versuchte, programmgesteuert erstellen Sie ein Entity-Framework-Verbindung mit meinem alten Verbindungszeichenfolge, die Verbindung ist fehlgeschlagen. Es beschwert, dass Sie nicht erkennen die Schlüssel in der Verbindungszeichenfolge, "server", um genau zu sein.

Fand ich heraus, dass ich brauchte, um dies zu tun, um die Entity Framework-Verbindung funktioniert:

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());

Warum ist das so?
Was ist der Metadaten-Eigenschaft für Sie?
Ist es ein problem, dass Ihr immer gleich für mehrere verschiedene verbindungen?
Was soll es sein?
Gibt es eine Möglichkeit, um dieses?

Vielen Dank im Voraus!

Update 1:
Vielen Dank für das update Randolpho, aber...
Der ganze Grund, warum ich mich mit diesem Problem ist, dass ich kann nicht speichern Sie die Verbindungszeichenfolgen in Konfigurationsdateien. Der connection string wird dynamisch zur Laufzeit ermittelt, indem die Benutzer eine Verbindung herstellen.

Hier ist meine genaue Szenario:
Wenn Benutzer Eine Verbindung herstellt, die app zieht Daten aus Datenbank A. Wenn sich Benutzer B verbinden, die app zieht Daten aus Datenbank B.
Die Verbindungszeichenfolgen werden gespeichert in einer Datenbank, und die Zahl ist potentiell Grenzenlos. Jedes mal, wenn ich einen Benutzer hinzufügen, ich will nicht ins web.config, nicht zu schweigen von der Tatsache, dass es schließlich RIESIG!

InformationsquelleAutor der Frage John Bubriski | 2009-01-30

Schreibe einen Kommentar