Мастера 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.
Надеюсь, это всем очень поможет.
Ответ 7
Я меняю конфигурационный файл из
<entityFramework>.....</entityFramework>
к
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">.....</entityFramework>
и все работает
ссылка: https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html