Не удается использовать соединение MySQL для Entity framework 6
Я пытаюсь использовать entity framework 6 с MySQL.
Я установил плагин MySQL для visual studio 1.1.1 и MySQL .Net connector 6.8.3.
проблема в том, когда я пытаюсь создать новый ADO.NET модель сущности, я не могу выбрать MySQL для подключения.

но если я создам соединение из средства подключения в visual studio, я могу видеть MySQL

Это означает, что версия в настоящее время установленный не совместим с Entity framework 6. Как это возможно, после этого я установил последний разъем и плагин. Есть ли что-нибудь еще делать?
спасибо
EDIT
Я сделал новую установку MySQL без установки соединителя по умолчанию, а затем я установил 6.8.3 и плагин для visual studio.
тогда я вижу соединение, которое я сделал для своей модели сущности, но когда я собираюсь выбрать сущность версия, я получаю это сообщение.

9 ответов:
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ
ошибка была исправлена.
Криса комментарий:
2015-11-07 и теперь вы можете получить все это работает без редактирования каких-либо файлы или делать странные вещи. Используйте установщик MySQL для Windows и включите поддержку Visual Studio и последнюю версию Connector.Net. быть обязательно обновите после установки, и вы получите последнюю версию каждого (1.2.5 и 6.9.8). Используйте NuGet для установки EntityFramework, MySql.Данные, и MySql.Данные.Сущность. Наконец, встроенный и наслаждаться кодом-первый обратный инженерная доброта путем добавления Ado.Net модель сущности.
оригинальный ответ
я узнал, что это ошибка из MySQL.
здесь ссылка, объясняющая работу.
на вашем компьютере, где установлен VS 2013, VS plugin (1.1.3 GA) и Соединитель / Сеть
закройте все экземпляры VS перед выполнением шагов.
в окне Проводника Windows перейдите по этому пути или туда, где вы установили вы соединитель / сеть двоичных файлов
C:\Program файлы (x86)\MySQL\MySQL Connector Net 6.8.3 \ Assemblies\v4. 5\
скопировать файл:
MySql.Данные.Сущность.Помощью ef6.dll
и вставьте его в эту папку
C:\Program файлы (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
если он просит вас перепишите его, пожалуйста, сделайте это.
вам понадобятся права администратора для перезаписи файла.
затем вы можете попробовать еще раз сгенерировать скрипт для вашей модели.
важно, чтобы у вас была версия 1.1.3 плагина VS установлен, так как этот обходной путь для этого.
к сожалению, это не работает для меня, поэтому я понизил до entity framework 5, пока они не исправят этот.
редактировать
наконец, это работает сейчас.
мне пришлось добавить 3 следующие DLL:
- C:\Program файлы (x86)\MySQL\MySQL Connector Net 6.8.3 \ Assemblies\v4.5\MySql.Данные.dll
- C:\Program файлы (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Данные.Сущность.Помощью ef6.dll
- C:\Program файлы (x86)\MySQL\MySQL Connector Net 6.8.3 \ Assemblies\v4.5\MySql.Сеть.dll
затем я изменил часть EntityFramework в веб-конфигурации на:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>Не забудьте восстановить и вы должны быть в состоянии создать модель entity framework 6 с MySQL.
важно
убедитесь, что вы установили MySQL для visual studio 1.1.3 и MySQL connector .net 6.8.3
решение! 2017
Установить Пакет Nuget:
Install-Package EntityFramework Install-Package MySql.Data.Entity -Version 6.9.9установить MySQL для Visual Studio 1.2.6 - https://dev.mysql.com/downloads/windows/visualstudio/
изменения в Сети.Конфигурации
<EntityFramework>to:
<EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">добавить (** информацию **):
<connectionStrings> <add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>
Перезапустить Visual StudioМои Настройки:
- Microsoft Visual Studio Сообщество 2015
- Dot Net Framework 4.5.2
- Asp.Net MVC 5.2.3.0
- MySql Server 5.6
Не уверен, что это все еще проблема для вас, ребята, но ни одно из вышеперечисленных решений не сработало для меня... пока я не нашел это:
http://www.microsoft.com/en-us/download/details.aspx?id=40762
после применения патчей (как для VS2013, так и для VS2012), я получил VS2013 прекрасно работает с EF6 для MySql.
ps. Установленные версии пакетов (от NuGet):
EntityFramework-6.1.3 (03/10/2015)
MySqlData-6.9.6 (24.02.2015)
MySql.Данные.Сущность-6.9.6 (24.02.2015)
MySql.Web-6.9.6 (24.02.2015)NuGet делает работу правильно и обновляет веб.Сконфигурируйте соответственно, заполнив раздел "entityFramework" всем необходимым.
для VS2013 он просто переходит от "не работает вообще" к "полностью функциональному". Для VS2012, это позволяет использовать "код первого из базы данных", который не был доступен до применения патча.
жаль, что я не нашел это о 10 дней назад, так что надеюсь, что это все еще может помочь.
для меня переустановка MySQL и использование установленной версии коннектора в качестве ссылки в Visual studio работали!
действия:
- переустановите MySQL Tools с последним стабильным MySQL connector для windows.
добавьте эти 3 файла в качестве ссылки в Visual Studio:
MySql.Данные.dll
- MySql.Данные.Сущность.Помощью ef6.dll
MySql.Сеть.dll
изменить после паутины.конфиг от
<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers>To:
<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers>убедитесь, что имя пользователя/пароль/имя БД для подключения правильно или Visual Studio может аварийно завершить работу. (Это случилось со мной.)
вы пытались установить последний Dot net connector для моего sql ? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html или http://dev.mysql.com/downloads/connector/net/ в зависимости от контекста.
обновление 2015-11-07
ошибки исправлены, и теперь вы можете получить все это работает без редактирования каких-либо файлов или даже ссылки на сборки вне NuGet для. Вам просто нужно установить правильную вещь и добавить правильные пакеты NuGet. Вот как:
используйте установщик MySQL для Windows и включите поддержку Visual Studio и последнюю версию Connector.Net. обязательно обновите после установки, и вы получите последнюю версию каждого (1.2.5 и 6.9.8).
затем используйте NuGet для установки EntityFramework, MySql.Данные, и MySql.Данные.Сущность.
наконец, построить и наслаждаться код-первый реверс инженерной доброты, добавив Ado.Net модель сущности.
попробуйте следующее решение....
выполните следующую команду на БД MySQL, а затем попробуйте, если это работает.
set global optimizer_switch= 'derived_merge=off'
Я также добавил следующие сборки:
- EF6 как Nuget пакет
- MySQL.Данные
- MySql.Данные.Сущность.Помощью ef6.dll
- MySQL.Web (не уверен, что это действительно необходимо)
FYI для всех, кто использует многопроектное решение, если вы не можете запустить свой проект GUI из-за проблем с поиском/загрузкой поставщика MySql EF6, например:
нет рамки юридическое лицо поставщика для поставщика ADO.NET с инвариантной имя базы данных MySQL.Данные.(...)'. Убедитесь, что поставщик зарегистрирован в разделе "entityFramework" файла конфигурации приложения. Смотрите http://go.microsoft.com/fwlink/?LinkId=260882 Подробнее информация.
см. этот вопрос.
хотя речь идет о SqlServer проблема может быть такой же: если только один из ваших проектов обрабатывает операции с БД, то, скорее всего, вы добавили ссылки Nuget на
СMySql.DataиMySql.Data.EntityиEntityFrameworkк этому проекту. Так какMySql.DataиEntityFrameworkиспользуются непосредственно кодом, процесс сборки достаточно умен, чтобы скопировать их в папку вывода и скопировать его во второй раз в проект GUI выходная папка также.MySql.Data.Entityссылается только наapp.configилиweb.configтекстовый файл, процесс сборки считает, что эта ссылка не нужна (код не использовать его!) и раздевает его, и вы не увидитеMySql.Data.Entity.EF6.dllв GUI project output dir, и это приводит к тому, что проект GUI не может найти этого поставщика.Итак-два варианта-убедитесь, что что-то копирует эту DLL там как часть процесса сборки (т. е. pre/post build event, deployment package builder, CI task, human task, что угодно) или просто сделайте прямую ссылку на сборку в вашем проекте DB/EF6.
мой столкнулся с той же проблемой.
Я сделал следующее:
1. Установите MySQL для Visual Studio из:
https://dev.mysql.com/downloads/windows/visualstudio/
2. Установите MySql.Данные в моем проекте
3. Установите MySql.Данные.И EntityFramework в моем проекте
Comments