Warum enthält das EntityConnection -Objekt nicht das Anmeldekennwort?
Frage
Ich habe eine App, die EF CTP5 verwendet.
In dieser speziellen Situation muss ich mich auf ein klassisches ado.net abbauen (um mehrere Ergebnissätze in einem gespeicherten Verfahren zu lesen, die EF nicht unterstützt).
Als solcher versuche ich das zu benutzen vorhandene Verbindungszeichenfolge von dem EntityConnection
Objekt wie dieses:
var ctx = (this as IObjectContextAdapter).ObjectContext;
var efCon = ((EntityConnection) (ctx.Connection)).StoreConnection;
var con = new SqlConnection(efCon.ConnectionString);
con.Open(); // exception thrown
Wenn ich debugug, sehe ich das das ConnectionString
Enthält nicht das Passwort, nur die Datenquelle, den Benutzernamen, die Datenbank usw. usw.
Ist das eine Sicherheitssache, warum sie es entfernt haben? Versteckt EF das Passwort irgendwo und verwendet es nur, wenn es gespeicherte Prozeduren selbst ausführt?
Die EF -Verbindungszeichenfolge ist nicht wie klassische ADO.NET -Verbindungszeichenfolgen, da sie Metadateninformationen enthält.
Es sieht also so aus, als ob ich den Teil der Verbindungszeichenfolge ausziehen muss, die ich brauche, das in das web.config einfügen und an das Repository weitergeben muss.
Sicherlich muss es einen besseren Weg geben!
Lösung
Versuchen Sie, "persistische Sicherheitsinformationen = True" hinzuzufügen; zur Kontextverbindungszeichenfolge. Das hat für mich funktioniert.