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!

War es hilfreich?

Lösung

Versuchen Sie, "persistische Sicherheitsinformationen = True" hinzuzufügen; zur Kontextverbindungszeichenfolge. Das hat für mich funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top