Ключевое слово не поддерживается исключение при попытке использовать строку подключения, которая указывает на ODBC DSN - PullRequest
6 голосов
/ 04 июля 2011

Я создал ODBC DSN для доступа к базе данных моего приложения Asp.Net MVC. Одна из основных причин заключается в том, что она позволяет легко сохранять учетные данные базы данных (например, адрес сервера, порт, имя пользователя и пароль) вне контроля источника, не мешая моим публикационным возможностям.

Поэтому я изменил свое соединение на DSN=MyDSN.

К сожалению, когда я запускаю запросы Entity Framework, я получаю Exception Details: System.ArgumentException: Keyword not supported: 'dsn'.

Кто-нибудь знает, что я делаю не так?

1 Ответ

9 голосов
/ 04 июля 2011

Если вы хотите использовать ODBC DSN, ваша строка соединения должна использовать System.Data.Odbc собственный поставщик вместо управляемого клиента SQL.

Редактировать:

Так что теперь от теории к практике.Это не работает из-за внутренней реализации EF.EF внутренне вызывает некоторый метод, который пытается получить DbProviderFactory из созданного соединения.Проблема в том, что это свойство определено в DbConnection и возвращает null.Только SqlConnection переопределяет свойство и возвращает правильную фабрику.Таким образом, EF не работает с поставщиком ODBC по умолчанию, и здесь очень четко описывает, почему.

...