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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese links finden Sie sehr informativ:
http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx
http://weblogs.asp.net/pgielens/archive/2006/08/21/ADO.NET-Entity-Framework-Metadata.aspx
Bottom line? Entity Framework benötigt, die Metadaten zu bauen entity mappings.
Darüber hinaus sollten Sie in Erwägung ziehen, Ihre Verbindung von Informationen aus der Konfigurationsdatei, anstatt es zu bauen im code. Der erste link wird Ihnen zeigen, wie zu tun.
InformationsquelleAutor der Antwort Randolpho
Erweiterung auf Randolpho Antwort:
Die metadata-Eigenschaft, die speziell auf den Speicherort der die .SSDL (Storage-Modell) .CSDL (Conceptual Model) und .MSL (Mapping Model) - Dateien. Diese drei Dateien sind im wesentlichen das Entity Data Model. Die "res://" - URI-Stil-qualifier gibt an, dass die Dateien eingebettet sind, die als Ressourcen in der kompilierten EDM-Montage.
InformationsquelleAutor der Antwort Dave Swersky