Ошибка 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