Мастера Entity Framework сбой в MySQL

Мой вопрос похож на этот, но авария происходит позже. я должен взаимодействовать с первой базой данных EF между SQL Server и MySQL. Более конкретно, мое приложение имело простые SQL-запросы, запущенные либо SQL Server, либо MySQL в соответствии со строкой подключения и настройкой конфигурации (DB_TYPE=MYSQL и т.д.), Имеющими обе базы данных с одинаковой структурой и поддерживаемые вместе, так что каждая модификация одной схемы была повторно привязан к другому.

Теперь я добавил поддержку EF в приложение с использованием первой модели базы данных SQL Server. Я должен, теперь пусть приложение также запускается на MySQL. Чтобы убедиться, что старый разработчик не оставил что-то несогласованное между двумя СУБД, я попытался Update model against database *, и на этот раз я выбрал подключение MySQL к моей базе данных разработки на localhost.

После того, как я нажму Next на экране ниже, он просто выйдет из строя и вернется в редактор EDMX

Data Model wizard

Мне нужно продолжить проект, я застрял на этом некоторое время.

Вот мой фрагмент Web.config:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <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, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

Как я могу решить свою проблему? Я переустановил инструменты MySQL для Visual Studio, но не помог.

* Я использую локализованную версию Visual Studio, поэтому я не знаю оригинальный английский для всех команд

Ответы

Ответ 1

Я понятия не имею, почему это работает, но я вошел в свой диспетчер пакетов NuGet и удалил MySql.Data.Entity(также проверял зависимости, которые удаляли MySql.Data). Я пошел в мой .edmx и запустил "Обновить модель из базы данных...", и все сработало.

(Примечание. Это также удалило мою инфраструктуру сущности, поэтому мне пришлось добавить ее обратно с помощью NuGet Manager)

W... T... F?

Возможно, другие могут подтвердить это...

Ответ 2

Я исправил эту проблему, выполнив следующие шаги (обратите внимание, что im использует vs2015 и .net 4.5)

1) Удалите все предыдущие соединители mysql, которые у вас есть

2) Удалите все ссылки mySQL через пакеты NuGet

3) Загрузите соединитель mysql v6.8.8

4) После этого загрузитесь в проект и добавьте в качестве ссылки новые установленные DLL файлы (расположенные на пути установки, обычно C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.8\Assemblies\v4.5)

5) Перейдите в свои пакеты NuGet и добавьте MySql.Data(версия 6.8) и MySql.Data.Entity(версия 6.8).

6) Создайте свое решение и больше не сработайте:)

Надеюсь, это поможет вам.

Ответ 3

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

В итоге я удалил и переустановил визуальную студию 2015 и mysql, а затем начал с нуля. Затем я обеспечил, чтобы я прошел процесс, принося только то, что было необходимо.

  • Использование nuget для установки MySql.Data 6.9.9 и MySql.Data.Entity 6.9.9. Больше ничего.
  • Nuget не изменяет веб-конфигурацию правильно, поэтому вам нужно изменить его, как показано ниже.

Перед

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
         <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
     </providers>
</entityFramework>

После

<entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
    <providers>
        <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
</entityFramework>

Это исправило это для меня. Я не уверен, что вам нужно переустановить, но наверняка вам нужно сделать шаг 2.

Удачи.

Ответ 4

У меня была аналогичная проблема. После установки "MySql.Data 6.9.9" и "MySql.Data.Entity 6.9.9" пакетов Nuget мастер разбился после этого экрана. Я подключил к нему отладчик и обнаружил, что он вызван исключением ссылочной ссылки в MySql.Data.Entity.EF6.dll.

Я понял, что это не пакеты, так как я уже попробовал переустановить их, поэтому я решил, что это может быть проблема с установкой MySQL для Visual Studio, конфликтующей с dll MySQL EF6. Для меня было просто переустановить последнюю версию "MySQL for Visual Studio 1.2.6":

http://dev.mysql.com/downloads/windows/visualstudio/

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

Ответ 5

В моем случае причина заключалась в том, что версия установленного mysql-коннектора отличалась от версии упомянутого MySQL.Data.Entity Когда я ссылался на ту же версию, все стало хорошо.

Ответ 6

спасибо за каждый пост. Для меня работал с использованием MySQL Connector 6.10.7. Выберите ту же версию для MySQL.Data и MySQL.Entity => 6.10.7.

Надеюсь, это всем очень поможет.