Подтвердить что ты не робот

Невозможно использовать соединение MySQL для сущности framework 6

Я пытаюсь использовать сущность framework 6 с MySQL.

Я установил MySQL-плагин для Visual Studio 1.1.1 и MySQL.Net-коннектор 6.8.3.

Проблема в том, что когда я пытаюсь создать новую модель Entity ADO.NET, я не могу выбрать MySQL для подключения.

enter image description here

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

enter image description here

Это означает, что установленная версия не совместима с инфраструктурой сущности 6. Как это возможно после этого, я установил последний соединитель и плагин. Есть ли что-нибудь еще?

Спасибо

ИЗМЕНИТЬ

Я сделал новую установку MySQL без установки соединителя по умолчанию, а затем я установил 6.8.3 и плагин для визуальной студии.

Затем я вижу соединение, которое я создал для моей модели Entity, но когда я собираюсь выбрать версию сущности, я получаю это сообщение.

enter image description here

4b9b3361

Ответ 1

ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ

Исправлена ​​ошибка.

Комментарий Криса:

2015-11-07, и теперь вы можете работать без редактирования файлы или делать странные вещи. Используйте установщик MySQL для Windows и включая поддержку Visual Studio и последнюю версию Connector.Net. Быть обязательно обновите после установки, и вы получите последнюю информацию о каждом (1.2.5 и 6.9.8). Используйте NuGet для установки EntityFramework, MySql.Data, и MySql.Data.Entity. Наконец, построили и наслаждались обратным преобразованием кода техническая компетентность, добавив модель Ento.Net Ado.Net.

Оригинальный ответ

Я обнаружил ошибку в MySQL.

Ниже приведена ссылка, поясняющая рабочий стол.

На вашем компьютере, где установлен VS 2013, плагин VS (1.1.3 GA) и Коннектор/Сеть

Закройте все экземпляры VS перед выполнением шагов.

В окне проводника Windows перейдите по этому пути или где вы установили вы Соединительные/сетевые двоичные файлы

C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Ассембли\v4.5\

Скопируйте файл:

MySql.Data.Entity.EF6.dll

И вставьте его в эту папку

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

Если вы попросите его перезаписать, сделайте это.

Вам понадобятся права администратора, чтобы перезаписать файл.

Затем вы можете попробовать еще раз создать script для вашей модели.

Важно, чтобы у вас была версия 1.1.3 плагина VS установленный, так как это обходное решение для этого.

К сожалению, это не работает для меня, поэтому я отказался от структуры сущности 5 до тех пор, пока не исправит это.

ИЗМЕНИТЬ

Наконец, теперь он работает.

Мне пришлось добавить следующие 3 библиотеки DLL:

  • C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Сборки\v4.5\MySql.Data.dll
  • C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
  • C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Сборки\v4.5\MySql.Web.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>

Не забудьте REBUILD, и вы сможете создать модель сущности framework 6 с MySQL.

ВАЖНО

Убедитесь, что вы установили MySQL для визуальной студии 1.1.3 и соединителя MySQL.net 6.8.3

Ответ 2

РЕШЕНИЕ! 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/

Изменения в Web.Config

<EntityFramework>

в

<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 Community 2015
- Dot Net Framework 4.5.2
- Asp.Net MVC 5.2.3.0
- MySql Server 5.6

Ответ 3

Не уверен, что это все еще проблема для вас, ребята, но ни один из вышеперечисленных решений не работал у меня... пока я не нашел это:

http://www.microsoft.com/en-us/download/details.aspx?id=40762

После применения патчей (для VS2013 и VS2012), я получил VS2013, прекрасно работающий с EF6 для MySql.

пс. Установленные версии пакетов (от NuGet):
EntityFramework - 6.1.3 (03.10.2015)
MySqlData - 6.9.6 (02/24/2015)
MySql.Data.Entity - 6.9.6 (02/24/2015)
MySql.Web - 6.9.6 (02/24/2015)

NuGet правильно выполняет задание и обновляет Web.Config соответственно, заполняя раздел "entityFramework" всем необходимым.

Для VS2013 он просто переходит от "Не работает вообще" к "Полностью функциональный". Для VS2012 он позволяет использовать "Code First from Database", который не был доступен до применения патча.

Жаль, что я не нашел это около 10 дней назад, поэтому надеюсь, что это все равно может помочь.

Ответ 4

Для меня переустановка MySQL и использование установленной версии соединителя в качестве ссылки в Visual Studio работало!

Шаги:

  • Переустановите инструменты MySQL с помощью последнего стабильного соединителя MySQL для Windows.
  • Добавьте эти 3 файла в качестве ссылки в Visual Studio:

  • MySql.Data.dll

  • MySql.Data.Entity.EF6.dll
  • MySql.Web.dll

  • Измените следующий Web.config из

      <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. (Случилось со мной.)

Ответ 6

2015-11-07 Обновление

Исправлены ошибки, и теперь вы можете работать без редактирования каких-либо файлов или даже ссылаться на сборки вне NuGet. Вам просто нужно установить правильную вещь и добавить нужные пакеты NuGet. Вот как:

Используйте установщик MySQL для Windows и включите поддержку Visual Studio и последнюю версию Connector.Net. Обязательно обновляйтесь после установки, и вы получите последнюю из них (1.2.5 и 6.9.8).

Затем используйте NuGet для установки EntityFramework, MySql.Data и MySql.Data.Entity.

Наконец, создайте и получите удовольствие от обратного инженерного кода, добавив модель Ento.Net Ado.Net.

Ответ 7

Я нашел это на mySQL Bucktracker

Попробуйте следующее обходное решение....

Выполните следующую команду в базе данных MySQL, а затем попробуйте, если это будет работать.

установить глобальный optimizer_switch = 'производный_merge = off'

Я также добавил следующие сборки:

  • EF6 как пакет Nuget
  • MySQL.Data​​li >
  • MySql.Data.Entity.EF6.dll
  • MySQL.Web(не уверен, если это действительно необходимо)

Ответ 8

FYI для всех, кто использует многопроектное решение, если вы не можете запустить проект GUI из-за проблем с поиском/загрузкой поставщика MySql EF6, например:

Для провайдера ADO.NET не найдено провайдера инфраструктуры Entity Framework с инвариантным именем "MySql.Data. (...)". Убедитесь, что провайдер зарегистрирован в разделе "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, и это приведет к тому, что проект GUI не сможет найти этого провайдера.

Итак - два варианта - убедитесь, что что-то копирует эту DLL как часть процесса сборки (например, событие pre/post build, компоновщик пакета развертывания, задача CI, человеческая задача или что-то еще) или просто прямо ссылаются на сборки в вашем проекте DB/EF6.

Ответ 9

У меня была одна и та же проблема.

Я сделал следующее:
1. Установите MySQL для Visual Studio с:
https://dev.mysql.com/downloads/windows/visualstudio/
2. Установите MySql.Data в моем проекте
3. Установите MySql.Data.EntityFramework в моем проекте