Ошибка Entity Framework MySQL. Указанный поставщик хранилища не может быть найден в конфигурации или недействителен

Я написал сборку на С#, чтобы выполнить весь доступ к данным для базы данных MySQL. Я успешно использовал сборку (скомпилированную dll) в своем рабочем приложении для Windows winform. Но он работает только на компьютерах, на которых установлена ​​ "MySQL Connector Net 6.4.4".

Я попытался использовать ту же самую сборку с моим проектом asp.net Website. Во-первых, я получил сообщение об ошибке с отсутствующей строкой соединения. Это легко решить, добавив строку подключения MySQL к файлу web.config. Теперь я получаю эту ошибку (трассировка стека, указанная ниже), я попытался добавить следующие DLL в папку bin, чтобы решить эту проблему, но это не сработало.

MySql.Data.dll
MySql.Data.Entity.dll
MySql.Web.dll

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 

Ответ 1

Но он работает только на ПК, на которых установлена ​​ "MySQL Connector Net 6.4.4".

Означает ли это, что вы пытаетесь запустить свой код на компьютере, где поставщик не установлен? В этом случае вы также должны зарегистрировать поставщика в своем файле конфигурации, поскольку установка добавляет его в machine.config, и если вы его не установили, поставщик в настоящее время не зарегистрирован.

Попробуйте добавить это в свой файл web.config:

<system.data>
  <DbProviderFactories>
    <add name="MySQL Data Provider" 
         invariant="MySql.Data.MySqlClient" 
         description=".Net Framework Data Provider for MySQL"  
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

Ответ 2

Я обнаружил, что у меня тоже была эта проблема при использовании автономного установщика .NET 6.6.5.

Чтобы решить проблему, просто удалите автономный установщик .NET-коннектора и установите установщик mysql-community-installer, этот установщик позволяет добавлять/удалять функции в MySQL, и в нем одна из возможностей - это .NET-коннектор с Entity Рамочная поддержка.

После использования этого соединителя все ваши проблемы с MySQL EF исчезнут.

Ответ 3

Добавьте это в веб-конфигурацию

 <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
    </DbProviderFactories>
  </system.data>

Ответ 4

Для людей, которые дошли до этого старого вопроса через Google, как я:

Вы также получите эту ошибку, если перейдете на MySQL для Visual Studio 1.1.3, которая является первой совместимой версией с Visual Studio 2013, но все равно используйте MySQL Connector 6.6.6, которая, насколько мне известно, является последней версия, совместимая с Entity Framework 4.3.1.

Мы знали, что нам нужно обновить до EF5 (или 6) как можно скорее, но теперь это вынуждает нас изменить в очень неудобное время...

Ответ 5

У меня была эта ошибка (я использовал .net-разъем 6.4.3) после удаления всех .net-фреймворков и их переустановки. Исправлено удаление 6.4.3 и установка 6.6.5