Использование provider=SQLOLEDB в строке подключения EF 6
У нас есть устаревшие строки подключения, используемые различными клиентами sql из прошлых лет. Строка подключения имеет устаревший синтаксис: "Provider=SQLOLEDB". EF6 использует разные клиенты и провайдеры SQL.
Provider=SQLOLEDB;Data Source=<servername>;Initial Catalog=<dbname>;Integrated Security=SSPI
Поэтому мой вопрос: существует ли способ настроить EF6 для использования фабрики провайдеров или провайдеров соединений, которая будет знать, как обращаться с ключевым словом провайдера в строке соединения? В настоящее время я получаю сообщение об ошибке "Ключевое слово не поддерживается:" поставщик "." Я надеялся, что может быть способ избежать изменения строки подключения, которая не требует настройки времени выполнения для удаления ключевого слова из исходной строки подключения. Благодарю.
1 ответ
Проблема в том, что Entity Framework — это вещь .NET. А в ADO.net вам запрещено пользоваться провайдером.
Несмотря на то, что на самом деле вы используете классOleDbConnection , и обычно OLEDB позволяет указать поставщика OLEDB , вам просто не разрешено делать это здесь.
Класс ADO.net OleDbConnection определяет, пытаетесь ли вы использовать
Я знаю, что это (пока) не то, что вы здесь видите. То, что вы видите здесь, объясняется здесь :
Подход, который вы используете для создания строки подключения EF, является правильным.
НО...
Entity Framework работает только с провайдерами (например, SqlClient), которые поддерживают то, что называется службами провайдеров.
Поставщик OleDB не поддерживает «Службы поставщика», поэтому вы не можете использовать EF с OleDb (если только вы не найдете стороннего поставщика OleDb с поддержкой EF).
Надеюсь это поможет
Алекс
(команда Entity Framework, Microsoft)