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

Включить Entity Framework 6 для MySql (С#) в WinForms Microsoft Visual Studio 2013

Вчера я знал, что Entity Framework - это еще один метод доступа к базе данных помимо использования Dataset или DataReader, а затем я попытался заставить Entity Framework 6 работать на моем сервере базы данных MySql в MVS 2013.

Я открываю WinForms с .Net FrameWork 4.5.1. (поэтому у меня только App.config, но нет приложения/веб-конфигурации в проекте) После того, как я установил mysql-installer-community-5.7.3.0-m13.msi и

установить пакет EntityFramework через

Меню TOOLS → Менеджер пакетов библиотеки → Управление пакетами NuGet для Решение... → Онлайн → (Поиск) EntityFramework (остерегайтесь версии этого пакета, и он должен быть версии 6.0.2, если не нажать Обновления → EntityFramework для обновления)

Когда я попытался добавить ADO.NET Entity Data Model через

Щелкните правой кнопкой мыши Project → Add → New Item → ADO.NET Entity Data Model → Создать из базы данных → Новое соединение → Источники данных: → Изменить...- > База данных MySQL → Заполните имя сервера IP-адресом сервера, именем пользователя и паролем → Выберите имя базы данных- > тестовое соединение → OK

Затем генерируется строка Entity Connection → Tick Сохранить настройки подключения сущности в App.Config as → Далее > →

Какую версию Entity Framework вы хотите использовать? Есть опция Entity Framework 6.0, но вы не можете использовать ее, потому что

"Ваш проект ссылается на последнюю версию Entity Framework; однако поставщик базы данных Entity Framework, совместимый с этим версия не найдена для вашего подключения к данным. Выйдите из этого мастера, установить совместимого поставщика и переустановить проект до выполняя это действие".

Как это решить?

Кстати, если вы устанавливаете Entity Framework версии 5 в Nuget Package, у вас может быть опция Entity Framework 5.0 здесь, и вы можете использовать Entity Framework 5, но не версию 6.

4b9b3361

Ответ 1

Прежде всего, нам не требуется, чтобы установить сообщество mysql-installer- -5.7.3.0-m13.msi.

  • Установите последний mysql-visualstudio-plugin
  • Установите последнюю mysql-connector-net
  • Новый С#.Net 4.5 Framework WinForms (для 4.0 он должен работать на основе Поддерживает ли Entity Framework 6.NET 4.0?)
  • Установите 4 Nuget Packages (следуйте последовательности, если вы установите Mysql.Data.Entities перед EntityFramework, он будет разрешать зависимость и устанавливать EntityFramework 6.0.2, но то, что нам нужно это EntityFramework 6.1.0)

EntityFramework

Mysql.Data​​p >

Mysql.Data.Entities

Mysql.Web

5.Если у вас tag entityFramework в App.config, прокомментируйте его и вставьте новый тег entityFramework в App.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" />
    </providers>
  </entityFramework>

6.Add ADO.NET Entity Data Model (как указано в вопросе)

7.После Строка соединения Entity Connection генерируется (как указано в вопросе) и установите флажок Сохранить параметры подключения сущности в App.Config, а затем нажмите "Далее"

8.Выберите свой объект и настройки базы данных (таблицы, представления или хранимые процедуры и функции) (у вас нет "какой версии Entity Framework вы хотите использовать?", потому что у меня есть только один Entity Framework 6.0, поэтому прямой пропустить выбор, если мой единственный провайдер действителен)

9.Finish

Поздравляем ^^

Кстати, вам может понадобиться добавить DLL файлы

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

внутри этой папки

C:\Program Files\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5 (32-битные окна)

C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5 (64-битные окна)

в качестве ссылки на проект для дальнейших функций EF6.

Ответ 2

Я следовал инструкциям, данным V-Shy, и имел ту же проблему, что и LaRae White, когда мастер закрыл меня. Я запускаю VS2015 и только что использовал установщик MySql для обновления до MySQL для Visual Studio v1.2.6 и Connector/NET v6.9.8.

Что я в итоге сделал, чтобы заставить его работать, это:

  • Удалите все пакеты, которые я ранее установил, чтобы решить эту проблему (EntityFramework, Mysql.Data, Mysql.Data.Entities, Mysql.Web)
  • Добавлены следующие ссылки, найденные в C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5 вручную: MySql.Data.dll, MySql.Data.Entity.EF6.dll и MySql.Web.dll

Я надеюсь, что это поможет кому-то.

Ответ 3

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

В свойствах model.edmx имеется целая "Шаблон генерации DDL", по умолчанию он установлен в "SSDLToSQL10.tt(VS)", но для этого необходимо установить "SSDLToMySQL.tt(VS)"

Более того, он также вызывал ошибку:

Запуск преобразования: System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта.
bla bla bla
line 93 c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\SSDLToMySQL.tt

Что приводит меня к официальной ошибке в "MySQL для Visual Studio 1.1.3" , которая будет исправлена в следующей версии 1.1.4, которая пока недоступна.

Однако есть обходное решение:
Перезапишите "MySql.Data.Entity.EF6.dll" в
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
по файлу из NET Connector в
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\

Ответ 4

Убедитесь, что ваш DbContext имеет аннотацию, как показано в документации MySQL:

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public partial class MyDbContext : DbContext
{
}

Я все время обнаружил, что первое приложение базы данных ASP.NET MVC позволит мне обновить мой файл EDMX до тех пор, пока я не выберу его из исходного управления на другой машине.

Я надеюсь, что это поможет кому-то, кто не сможет обновить свой EDMX, или обнаружит ошибку при использовании MySQL с Entity Framework 6, поскольку я продолжал сталкиваться с той же ошибкой, пока не добавлю аннотацию.

Ответ 5

У меня была такая же проблема, и я пробовал различные исправления, подобные тем, которые есть здесь, а также некоторые из форумов MySQL и до сих пор не смог обновить EDMX.

Через какое-то время (ужасно долгие часы) мне удалось получить эту вещь, работая с обновлением VS 2013 версии 3,.Net 6.9.4, Mysql для VS 1.2.3 для моего MvcApplication.

Во-первых, я пробовал на совершенно новой машине, все работало с простой установкой VS, за которой следуют соединитель и Mysql для VS. Затем я также пробовал со старым VS 2012, и он тоже работал. Я уже написал несколько проектов с EF5 на своей машине и предположил, что старые файлы EF5 могут помешать работе EF6.

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

  • Удалите все файлы mysql. *. dll в папке C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

  • Перезаписать MySql.Data.Entity.dll в папке C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies с той, что находится в папке Connector

  • Удалите EntityFramework из вашего проекта в консоли Nuget, а затем перейдите на EF 6.0.0: Install-Package EntityFramework -ProjectName YourProject -version 6.0.0

  • Добавьте ссылку на MySql.Data.Entity.EF6 не с Nuget, а напрямую ссылкой на файл (C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.4\Assemblies\v4.5\MySql.Data.Entity.EF6.dll)

Мой файл app.config выглядит следующим образом

<configuration>
    <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
        <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>
    <connectionStrings>
        <!-- your connection string here -->
    </connectionStrings>
</configuration>

И ссылки, добавленные в проект, следующие три

  • EntityFramework
  • EntityFramework.SqlServer
  • MySql.Data.Entity.EF6

Возможно, некоторые из этих шагов были бесполезны, но теперь я могу, наконец, обновить свой файл EDMX и, конечно же, создать и запустить веб-проект, а VS не повлияет на удаление библиотек MySql. Надеюсь, что это поможет.

Ответ 6

У меня была такая же проблема. В моем случае мне пришлось:

  • Перестроить проект после добавления пакетов до запуска мастера добавления модели.
  • Удалите последнюю версию пакета фреймворков и вернитесь к версии 6.0.0.0.
  • НЕ установите Mysql.Data.Entities.EF6 после установки Mysql.Data.Entities!!
  • Измените конфигурационный файл, чтобы только один поставщик MySql.Data.MySqlClient находился внутри провайдеров и должен был включить версию:

    <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.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
    

Ответ 7

У меня есть аналогичная проблема с сообществом VS2013, но мой не WinForm, а ASP.NET MVC. После выполнения всех вышеперечисленных решений и моих проблем все еще есть, но они (особенно Хамед) дали мне некоторые идеи, чтобы исправить это.

Итак, если вы все еще прокрутите сюда, это может дать вам также идею. У меня есть:

  • Установленный MySQL Connector NET 6.8.4 (6.9.5, похоже, не работает).
  • Leaved MySQL для VS 1.2.3 как есть (нет необходимости устанавливать 1.1.1 с тех пор, как работал 1.2.3).
  • Установлен файл MySQL.data Mysql.Data.entities из NuGet.
  • Удалены все файлы MySQL.dll из D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies.
  • Сделано, как сказал Хамед.
  • Восстановленное решение.
  • Добавлена ​​новая модель Entity Model ADO.NET.

Надеюсь на эту помощь.

Ответ 8

После долгих часов работы в течение последних 2 дней мне наконец-то помогло вернуть весь мой код в старый код EF5, удалить ADO.NET Entity Data Model и повторно добавить его БЕЗ выбор сущности framework 6.0 (который был отключен), но выбор 5.0. Из-за последнего соединителя mysql, плагина Visual Studio и всех других компонентов, которые я установил, как упомянуто выше, visual studio автоматически добавила модель данных сущности Entity Framework 6.0 ADO, игнорируя мой "выбор". Затем я добавил все ссылки вручную в любом запрошенном ему проекте (EntityFramework, mysql.data, mysql.data.entity.EF6 ver 6.9.6) и наконец.

Ответ 9

Исправление выглядит следующим образом:

  • Установить плагин MySQL Visual Studio
  • Установите MySQL Connector для .NET.
  • Добавить ссылки в проекте из сборщиков MySQLConnector внутри программных файлов.
  • Удалите старый код из App.Config или Web.Config

    <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <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"> </defaultConnectionFactory> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>

  • Восстановите проект и попробуйте добавить новую модель данных Entity.NET ADO

Ответ 10

У меня были проблемы вроде ih303. Как я его исправил:

-Полученное решение V-SHY

- если нет сообщений об ошибках или что-то в этом роде, мастер просто уходит → выполните следующее решение (которое сработало для меня):

вместо ввода:

    <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>

измените его на следующее:

    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="mssqllocaldb" />
        </parameters>
      </defaultConnectionFactory>
      <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>

rebuild → добавить мастер и т.д. → должен работать.

Ответ 11

Мне удалось заставить его работать, удалив ссылки для:

MySql.Data.Entity.EF6
MySql.Data

И вместо этого я установил Nuget

MySql.Data.Entity

Что он сделал, это не только добавление ссылок на фреймворки, удаленные выше, но и внесение некоторых изменений конфигурации в проект. После того, как я установил nuget, я также перестроил проект, чтобы файлы dll были добавлены в каталог bin.

Ответ 12

Для меня это, похоже, имеет отношение к 32-разрядным VS-64-разрядным драйверам баз данных.

По крайней мере, в этот момент я могу переключаться между этой ошибкой и не иметь этой ошибки, меняя мою конфигурацию на x64. Попытка Любой процессор не работает, и попытка x86 не работает.

Я не уверен, где решить, использовать ли 32 или 64-битные драйверы MySQL; установщик утверждает, что устанавливает оба.

(Мне также необходимо добавить один или несколько пакетов NuGet MySql.Data, MySql.Data.Entity и MySql.Data.Entities, а также EntityFramework.)

Как только модель была добавлена ​​в мой проект, мне удалось переключить проект обратно на x86 без проблем.

Ответ 13

Когда мы добавляем элемент данных ADO.NET Entity Data Model с соединением Oracle, тогда появляется сообщение об ошибке "Ваш проект ссылается на последнюю версию Entity Framework..."

Здесь приведены шаги разрешения:

  • Установите Oracle ODTwithODAC122010 как 32Bit

  • Создайте свой проект в VS2017

  • Измените Active Solution Platform на 32 бит из AnyCPU

  • Открыть Инструменты- > Nuget PackageManager- > Управление пакетами Nuget для решения

  • Записать область обзора "ODP" и установить следующую программу

Oracle. ManagedDataAccess а также Oracle.ManagedDataAccess.EntityFramework

6.Открыть инструменты- > Nuget PackageManager- > Консоль диспетчера пакетов

7. Запишите эту конструкцию EntityFramework Install-Package -Version 6.1.1 и введите

8. Запустите Visual Studio для завершения процесса

9.Re-Создать свое приложение

  1. Добавить новый элемент ADO.NET Entity Data Model

11.Если требуется Добавить новое подключение к Oracle (Источник данных = База данных Oracle (ODP.NET, Управляемый драйвер))

12. Все в порядке.

Примечание. Я хочу, чтобы EF6.1.3 не работал с VS2017 и Oracle ODTwithODAC122010. Но после всего этого процесса я изменил EF как EF6.1.3, он работает Но я не советую вам.

Ответ 14

Решение, которое сработало для меня, было первым, чтобы выполнить шаги @V-SHY и установить MySql.Data.Entity