Почему объект EntityConnection не содержит пароля входа в систему?
Вопрос
У меня есть приложение, которое использует 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 не похожа на Classic Ado.net строки соединения, так как она имеет информацию о метаданных.
Таким образом, похоже, что мне придется лишить ту часть строки подключения, которая мне нужна, поместить это в web.config и передать ее в репозиторий.
Конечно, должен быть лучший способ!
Решение
Попробуйте добавить «Постоянная информация о безопасности = true;» к контексту строки подключения. Это сработало для меня.