Почему объект EntityConnection не содержит пароль для входа? - PullRequest
3 голосов
/ 16 марта 2011

У меня есть приложение, которое использует EF CTP5.

В этой конкретной ситуации мне нужно перейти к некоторому классическому ADO.NET (для чтения нескольких наборов результатов в хранимой процедуре, которую EF не поддерживает).

Поэтому я пытаюсь использовать существующую строку подключения из объекта EntityConnection, например:

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

При отладке я вижу, что ConnectionString не содержит пароль, только источник данных, имя пользователя, базу данных и т. Д.

Это из соображений безопасности, почему они удалили его? EF скрывает где-нибудь пароль и использует его только тогда, когда он сам выполняет хранимые процедуры?

Строка подключения EF не похожа на классические строки подключения ADO.NET, так как содержит информацию метаданных.

Похоже, мне придется вырезать часть нужной мне строки подключения, поместить ее в web.config и передать ее в репозиторий.

Конечно, должен быть лучший путь!

1 Ответ

6 голосов
/ 16 марта 2011

Попробуйте добавить «Persist Security Info = True;» к строке подключения к контексту. Это сработало для меня.

...