Использование 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)

Другие вопросы по тегам