Question

J'ai une application qui utilise EF CTP5.

Dans ce cas particulier, je dois degrade une certaine ADO.NET classique (pour lire plusieurs ensembles de résultats dans une procédure stockée, qui ne supporte pas les EF).

En tant que tel, im essayant d'utiliser le chaîne de connexion existante de l'objet EntityConnection, comme ceci:

var ctx = (this as IObjectContextAdapter).ObjectContext;
var efCon = ((EntityConnection) (ctx.Connection)).StoreConnection;
var con = new SqlConnection(efCon.ConnectionString);
con.Open(); // exception thrown

Quand je debug, je vois que le ConnectionString ne contient pas le mot de passe, seule la source de données, nom d'utilisateur, base de données, etc.

Est-ce une chose de sécurité pourquoi ils ont enlevé? Est-ce que EF cacher quelque part le mot de passe et ne l'utiliser que lors de l'exécution des procédures stockées lui-même?

La chaîne de connexion EF n'est pas comme les chaînes de connexion ADO.NET classique, car il a des infos métadonnées.

Il semble donc que im va devoir enlever la partie de la chaîne de connexion que j'ai besoin, mettez dans le web.config et passer par le dépôt.

Il doit sûrement y avoir un moyen de mieux!

Était-ce utile?

La solution

Essayez d'ajouter "Persist Security Info = true;" à la chaîne de connexion de contexte. Cela a fonctionné pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top