MySQL - ошибка Unable to find the requested .Net Framework Data Provider
Материал из 1GbWiki.
Пример ошибки
Ошибка Unable to find the requested .Net Framework Data Provider. It may not be installed. может возникать в случае использования mySQL .NET Connector при неразмещении его на сайте. Ниже описано что делать.
Добавить файлы MySQL .NET Connector в проект
Вам необходимо:
1. Зайти в серверную часть Вашего проекта в Visual Studio.
2. Открыть там вкладку References.
3. Добавить в нее следующие три файла:
MySql.Data.dll MySql.Data.Entity.dll MySql.Data.Web.dll
4. В отношении каждого из трех этих файлов выбрать показать свойства (Properties) и изменить там параметр "Copy Local" на "true". Таким образом при создании файлов страницы эти три файла будут скопированы в папку Bin Вашей страницы.
Указанные три файла находятся по адресу: Program Files (x86)\MySQL\MySQL Connector Net 6.3.7\Assemblies\v4.0\ (этот адрес соответствует 64битной системе с коннектором версии 6.3.7. и v4.0 .NET)
Должны быть добавлены все три файла. Иначе работать не будет.
Внести изменения в web.config
Добавить assembly MySql:
<configuration> <system.web> <compilation> <assemblies> <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <add assembly="MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> <assemblies> <compilation> <system.web> <configuration>
(до добавления в проекте уже есть assembly System.Data.Entity, если Вы добавляли ADO.NET Entity Data Model в проект)
Если Вы используете другую версию коннектора, то необходимо соответственно изменить поле Version. Остальные данные остаются неизменными.
Добавить определение Data Provider:
<system.data> <DbProviderFactories> <clear /> <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.3.7.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
Добавить строку подключения (она добавляется автоматически при добавлении ADO.NET Entity Data Model в проект) и выглядит так (добавляйте лучше не вручную):
<connectionStrings> <add name="EntitiesName" connectionString="metadata=res://*/DataClasses.csdl|res://*/DataClasses.ssdl|res://*/DataClasses.msl;provider=MySql.Data.MySqlClient;provider connection string="server=servername;User Id=USERID;password=PASSWORD;Persist Security Info=True;database=DATABASENAME"" providerName="System.Data.EntityClient" /> </connectionStrings>
Если при попытке создать соединение у вас возникает ошибка, то временно измените формат представления данных в языках системы с русского на English (United States). Тогда ошибки не будет и соединение будет создано (это известная ошибка в коннекторе).