Ich verwende Entity Framework 4 in meinem Projekt. Das Framework hat eine eigene Verbindungszeichenfolge erstellt, daher sieht meine Abschnittsdatei web.config
connectionStrings folgendermaßen aus:
Die erste Verbindungszeichenfolge namens ApplicationServices
ist meine ursprüngliche. Die zweite, namens VNKEntities
, wurde beim Generieren des Modells erstellt.
Als ich die generierte Datei *. edmx überprüft habe, habe ich festgestellt, dass dieses Modell auf seine Verbindungszeichenfolge verweist, die unten gezeigt wird:
%Vor% Meine Frage ist, wie kann ich die Verbindungszeichenfolge VNKEntities
loswerden und nur ApplicationServices
belassen, auf die ich von meinem Modell verweisen werde? Ich möchte nur eine Verbindungszeichenfolge zur Datenbank haben, weil ich nur eine Datenbank verwende (den Konstruktorparameter von name=VNKEntities
zu name=ApplicationServices
ersetzend funktioniert nicht).
Grüße
Obwohl Sie die Verbindung im Code erstellen können, wie @gandjustas (+1) hervorhebt, können Sie nicht auf eine Verbindungszeichenfolge oder EntityConnection
verzichten.
Dies liegt daran, dass nicht wirklich redundant ist . Ja, der Datenbankverbindungsteil ist redundant und @gandjustas hat Ihnen gezeigt, wie Sie diese Redundanz entfernen können. Die Verbindungszeichenfolge des Entitätsrahmens enthält jedoch auch Informationen zu Ihrem Modell, das nirgendwo in der Verbindungszeichenfolge gefunden wird, die Sie behalten möchten. Diese Modellinformation muss von irgendwo kommen. Wenn Sie die Verbindungszeichenfolge des Entitätsframeworks eliminieren und den Parameterlistenkonstruktor für ObjectContext
verwenden würden, hätten Sie alle Referenzen auf das Modell eliminiert.
Ich hatte das gleiche Problem. Ich habe es folgendermaßen gelöst:
Ich habe zwei edmx-Dateien erstellt, aber beim Erstellen der zweiten edmx-Datei habe ich die Verbindungszeichenfolge ignoriert, die in der Konfigurationsdatei gespeichert werden soll. Auf diese Weise enthält meine Konfigurationsdatei nur eine Verbindungszeichenfolge. Dann habe ich folgende Zeilen in meiner Verbindungszeichenfolge geändert:
%Vor%Ersetzen Sie einfach "res: //model1.csdl" durch "res: // * /" und es funktioniert wie ein Zauber.
Sie können diesen Verbindungsnamen im Konstruktor Ihrer dbcontext-Klasse wie folgt angeben:
%Vor%Hinweis: Ich verwende Entity Framework 5.0.
Ich werde die vollständige Implementierung bereitstellen, die ich zur Lösung dieses Problems (basierend auf den Gandjustas-Hinweisen) durchgeführt habe. Ich habe einen einfachen Wrapper für den Kontext geschrieben, der folgendermaßen verwendet werden kann:
%Vor% Type ContextWrapper
ist eine Vorlage, die einfach den Kontext umschließt, der nur leicht anders konstruiert ist (nur eine Verbindungszeichenfolge verwendend) und dann per Eigenschaft verfügbar gemacht wird. Seine interne Implementierung ist unten platziert:
Sie können die Verwendung der benutzerdefinierten Klasse EntityConnectionManager
:
Nun können Sie eine Verbindungszeichenfolge haben:
%Vor%und Metadaten, die im Abschnitt mit den App-Einstellungen definiert sind (der zweite wichtige Punkt für die Assembly, in dem das Domänenmodell tatsächlich gespeichert ist):
%Vor% Die Logik für den Typ Setting
ist einfach, da sie nur die Einstellungen aus der Konfigurationsdatei herauszieht.
Tags und Links configuration .net c# entity-framework ado.net