Wie wird eine dynamische Verbindungszeichenfolge mit einem Model-First-Ansatz verwendet, aber das Datenmodell im EDMX weiterhin verwendet?

8

Ich habe einen EDMX unter Verwendung von EF 5 mit dem Ansatz "Model First" erstellt, d. h. ich habe mit einem leeren Designer begonnen und meine Entitäten modelliert. Jetzt möchte ich in der Lage sein, dieses Modell zu verwenden, das im EDMX definiert ist, aber Runtime-SQL Server-Verbindungszeichenfolgen liefert, ohne die Konfigurationsdatei zu modifizieren.

Ich weiß, wie eine Verbindungszeichenfolge an den DbContext übergeben wird, aber das Problem besteht darin, die Metadaten für die Mappings in der Assembly zu finden.

Zum Beispiel hat mein EDMX diese Verbindungszeichenfolge in der app.config

%Vor%

Der Teil, den ich vermisse, ist "metadata=res://*/Data.DataContext.EntityFramework.MesSystem.csdl|res://*/Data.DataContext.EntityFramework.MesSystem.ssdl|res://*/Data.DataContext.EntityFramework.MesSystem.msl;"

Ich möchte in der Lage sein, eine DbContext zu erstellen, die programmatisch eine SQL Server-Verbindungszeichenfolge übergibt, aber den Metadatenabschnitt "hinzufügt".

Das möchte ich mit der T4-Datei erzeugen ...

%Vor%

Meine Frage ist, wie kann ich die Metadaten erhalten, die ich in der T4-Generierungsdatei brauche, um die Entity Framework-Verbindung zu erstellen, ohne sie für jede EDMX-Datei zu kodieren

ODER

gibt es eine einfachere Möglichkeit, die Metadaten programmgesteuert aus der Assembly zu laden?

    
Jim 19.12.2012, 18:17
quelle

1 Antwort

8

Ich hatte das gleiche Problem, also habe ich, statt mich auf alle Metadaten in der Verbindungszeichenfolge zu verlassen (was ich nicht für eine gute Idee halte) eine Methode geschrieben, um sie aus einer Standardverbindungszeichenfolge zu erstellen. (Ich sollte es wahrscheinlich in eine Extension-Methode für DbContext umgestalten, aber das sollte tun)

%Vor%

Grundlegende Verwendung ist etwas wie:

%Vor%     
Erik Philips 19.12.2012, 18:58
quelle