Поставщик службы Entity Framework не найден для поставщика ADO.NET с инвариантным именем «System.Data.SqlClient».

.net asp.net c# entity-framework-6 sql-server

Вопрос

Мы используем EntityFramework 6 с кодом First. У нас есть консольное приложение, которое не имеет ссылки на EntityFramework, но читает строку подключения из App.config. Он вызывает сборку DatabaseInitializationUtilities, передающую строку соединения в качестве параметра.

DatabaseInitializationUtilities имеет ссылку на EF6 (EntityFramework и EntityFramework.SqlServer). Его App.config:

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
     <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     </configSections>
     <system.serviceModel>
         <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IAuthentication" />
            </basicHttpBinding>
         </bindings>
         <client>
            <endpoint address="http://localhost/SecurityServices/Authentication.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAuthentication" contract="SecurityService.IAuthentication" name="BasicHttpBinding_IAuthentication" />
         </client>
      </system.serviceModel>
      <entityFramework>
         <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
            <parameters>
               <parameter value="v11.0" />
            </parameters>
         </defaultConnectionFactory>
         <providers>
            <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
         </providers>
      </entityFramework>
   </configuration>

Когда выполнение достигает строки, в которой DatabaseInitializationUtilities пытается запустить скрипт

context.Database.ExecuteSqlCommand(script.ScriptText)

ошибка забрасывается:

Поставщик службы Entity Framework не найден для поставщика ADO.NET с инвариантным именем «System.Data.SqlClient». Убедитесь, что провайдер зарегистрирован в разделе «entityFramework» файла конфигурации приложения. Дополнительную информацию см. На странице http://go.microsoft.com/fwlink/?LinkId=260882 .

Я считаю, что это именно то, что у меня есть в файле конфигурации, поэтому я не понимаю проблему.

ПРИМЕЧАНИЕ. Resharper блокирует узел и сообщает «Элемент EntityFramework» имеет недопустимый дочерний элемент «провайдеры». Однако раздел был введен NuGet, когда я установил EF6.

Есть идеи?

Популярные ответы

Вам нужно создать ссылку, поэтому она будет скопирована в папку отладки. Таким образом, он может быть доступен во время выполнения.

Не копируйте файлы, просто создайте эту ссылку:

private volatile Type _dependency;

public MyClass()
{
    _dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему