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

Коннектор 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 или других программ необходимо.

Может ли кто-нибудь определить, что я делаю неправильно?

4b9b3361

Ответ 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.