Коннектор MySQL с EF6 в Visual Studio 2013
Я пытаюсь подключиться к MySQL через веб-приложение MVC С#.NET.
Моя проблема в том, что когда я пытаюсь добавить ADO.NET Entity Data Model, созданную из базы данных, на основе моего подключения к MySQL, появляется следующее сообщение об ошибке:
Ваш проект ссылается на последнюю версию Entity Framework; однако поставщик базы данных Entity Framework, совместимый с эту версию не удалось найти для подключения к данным. Выйдите из этого мастера, установите совместимый поставщик, и перестройте свой проект перед выполнением этого действия.
Я запускаю следующее программное обеспечение, обновления и дополнения:
- Visual Studio 2013
- Сервер MySQL v5.6.21
- MySQL для Visual Studio v1.2.3
- Разъем /NET v6.9.4
Пакеты NuGet:
- EntityFramework v6.1.1
- MySQL.Data v6.9.3
- MySQL.Data.Entities v6.8.3.0
- SQL.Web v6.9.3
Мой web.config, блок entityFramework:
..
</system.webServer>
<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" />
</providers>
</entityFramework>
<runtime>
..
Я просмотрел все другие решения, которые я мог найти здесь, на SO и вообще через Google, попробовал все, и ни одно из решений, похоже, не работало или не предназначалось для очень разных версий Connector/NET или других программ необходимо.
Может ли кто-нибудь определить, что я делаю неправильно?
Ответы
Ответ 1
Основным решением является переустановка MySQL и VisualStudio , включая Entity и .NET.
По какой-то причине я не уверен, почему процесс установки искажает библиотеки DLL или, по крайней мере, тот опыт, который у меня был, и другие коллеги. Наше решение состояло в том, чтобы попробовать все выше, безрезультатно. Поэтому в итоге мы попытались переустановить, и это сработало. Поэтому попробуйте:)
Ответ 2
У меня была такая же проблема. После установки:
- Visual Studio 2013 Community Edition
- MySQL для Visual Studio 1.2.3
- MySQL Connector.NET 6.9.5
Я не хотел переустанавливать Visual Studio, поэтому после некоторых тестов я обнаружил, что папка " C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies" содержит старые версии следующих файлов:
- MySql.Data.dll
- MySql.Data.Entity.EF6.dll
- MySql.Web.dll
После закрытия Visual Studio я заменил эти файлы на " C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5", и теперь он работает!
Примечание: замените 6.9.5 в названии подпапки выше, с фактической версией, установленной в вашей системе.
Ответ 3
Это работало для меня БЕЗ переустановки Visual Studio или чего-то еще такого.
- установлен последний подключаемый модуль Visual Studio от MySQL и соединительная сеть MySQL.
- удалено тег entityFramework в App.config или Web.config и все его дочерние теги.
- заменил его следующим кодом:
<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" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
- добавлен MySql.Data.dll, MySql.Data.Entity.EF6.dll и MySql.Web.dll(если не приложение WPF) ссылки на проект.
- перестроен проект, а затем добавлена модель ado.net.
ПРИМЕЧАНИЕ. Удостоверьтесь, что вы удаляете только тег entityFramework и его дочерние элементы, а также заменяете его вышеописанным. Если вы удалите любые "лишние" теги, у вас могут возникнуть еще большие проблемы с вашим проектом, как и я. Х)
Ответ 4
Просто добавьте в web.config:
<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" />
</DbProviderFactories>
</system.data>
Не забудьте перестроить решение, прежде чем пытаться снова добавить модель данных сущностей ADO.NET, созданную из базы данных.
Ответ 5
Я столкнулся с той же проблемой. К счастью, я исправил это. Файл MySql.Data.dll или MySql.Data.Entity.EF6.dll несовместим с версией EF 6.1. Что я сделал, я установил EF версию 6.0.0.0 в консоль nuget с помощью этой команды → install-package entityframework -version 6.0.0.0 и исправил эту проблему.
Ответ 6
Теперь это не проблема, которая у меня была, но я нашел следующее возможное решение:
- Щелкните правой кнопкой мыши по решению (верхний уровень в проводнике решений).
- Управление пакетами Nuget для решения.
- Перейдите на вкладку "Установленные".
- Для всех связанных с EntityFramework пакетов (MySql.Data, MySql.Data.Entities, MySql.ConnectorNET.Entity и MySql.ConnectorNET.Data) выберите их, затем выберите кнопку "Управление".
- Включить каждый пакет для всех проектов.
Что я заметил здесь, так это то, что у него было два дополнительных пакета, которые вы не упомянули "MySql.ConnectorNET.Entity" и "MySql.ConnectorNet.Data". Возможно, вам не хватает этих данных, и они необходимы для работы с Entity Framework 6.1.1.
(Источник: Отсутствует поставщик инфраструктуры Entity Framework)
Ответ 7
Если вам нужно использовать EntityFramework с базой данных mysql, вам просто нужно установить более старую версию EntityFramework, например v 5.0, с помощью консоли менеджера пакетов. Запись Install-Package EntityFramework -Version 5.0.0.
Наслаждаться.
https://www.nuget.org/packages/EntityFramework/5.0.0
Ответ 8
У меня есть рабочий проект с версией 6.8.3 библиотек соединителей MySQL и EF6 v6.0.0. Я помню эту ошибку, я решил, что я решил добавить некоторую строку в app.config вручную.
Я перечисляю вам строки в моем app.config, связанные с конфигурацией EF6 и MySQL, отличаются от ваших, возможно, это помогает вам:
<configSections>
...
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
Я установил MySQL Connector Net 6.8.3 с пакетом, загруженным с сайта MySQL, и добавил две ссылки на проект: MySql.Data и MySql.Data.Entity.EF6, оба версии 6.8.3 (я замечаю, что вы используя разные версии этих файлов...).
Я добавил EF6 (v 6.0.0) в проект через Nuget.
Не последние версии, но надеюсь, что это поможет.
Ответ 9
Решение состоит в том, чтобы добавить это к app.config
/web.config
в проект, который вы пытаетесь добавить/изменить модель данных.
<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.9.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
измените версию в соответствии с вашим коннектором.
Ответ 10
прежде всего, переустановите vs 1.2.3, добавив следующие ссылки на ваш проект или проверьте его версии:
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
Удалить тег entityFramework по умолчанию в App.config или Web.config
Перестройте свой проект, вы можете добавить ADO.NET Entity Data Model
Ответ 11
Я использовал сообщество visual studio 2013. Требуется выполнить код First on MySQL db. У меня была та же проблема: "В вашем проекте ссылается последняя версия Entity Framework,..."
То, что решило мою проблему, было простым шагом, приведенным ниже.
- После добавления проекта используйте консоль nuget для добавления EntityFramework6.1.3 с помощью пакета install EntityFramework
- Пользовательская консоль для добавления ссылки MySQL в MySQL.Data.Entity
-
Откройте ваш Web.config или App.config, чтобы изменить разделы entityframework и system.data, как указано ниже
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<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, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider>
</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.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
-
На этом этапе убедитесь, что вы перестраиваете свой проект. (Это обязательно)
-
Теперь добавьте ADO Entity Models и выберите MySQL, и он работает.
Кстати, я использую плагины M4VS 1.2.3 и MySQL.NET Connector 6.9.7
Ответ 12
Довольно просто я использовал Nuget для ссылки на MySQL.dll(и т.д.), и он автоматически ссылался на dll.net 4.0. Я просто изменил ссылки на 4.5, и это сработало.
Ответ 13
выполните в командной строке nuget
update-package -reinstall -ignoreDependencies
и перестроить решение
эта работа или я
Ответ 14
Я добавил это, которое решило это для меня:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Ответ 15
В 2018 году все еще есть проблемы...
DB-первый сценарий: для Visual Studio 2017 Community Edition я нашел рабочую комбинацию:
- MySQL для Visual Studio 1.2.8
- MySQL Connector.NET 6.9.9
- EntityFramework 5.0.0 (я попробовал разные комбинации для v6.x без везения)
Код-Первый сценарий Я могу запустить с помощью официальной документации https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html с последними коннекторами v.8.0.11 и EF6.