Entity Framework с базой данных mysql в первую очередь

Я работаю над новым проектом с C#, и мы хотим использовать entity framework 6, но каждый раз мы хотим сгенерировать модели на основе базы данных, которую мы используем. Но когда я создаю модель ADO.Net с помощью мастера, после того, как я выберу базу данных и структуру сущностей, я нажимаю кнопку «Далее» и вместо этого появляется окно для выбора таблиц, окна исчезают без каких-либо ошибок. .

Я использую версию сообщества Visual Studio 2017 и установил соединитель mysql v.8.0.11. Если я понизлю версию соединителя mysql и структуру объекта до v5, все будет работать без каких-либо проблем, но после того, как я обновлю структуру соединителя и объекта до версии 6. * у меня возникнет проблема, о которой я сообщил выше.

Привет, ты нашел какое-нибудь решение?

frhack 04.07.2018 12:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
1
8 672
5

Ответы 5

Это проблема с версией используемых вами пакетов коннектора MySQL. В моем случае я использую MySQL.Data, MySQL.Entity and MySQL.Web от Nuget. Если я использую любую версию после 6.9.11, я получаю указанное вами поведение.

Вероятно, ваш вопрос дублирует stackoverflow.com/questions/49036983/…

7 Reeds 08.05.2018 16:03

Когда я это делаю, все работает нормально, но я потерял доступ к Entity framework v6 и его требованию для этого проекта. В вашем случае вы используете v5 или v6 фреймворка entity?

Rubemlrm 08.05.2018 16:32

Nuget говорит мне: 6.2.0

7 Reeds 08.05.2018 16:57

Если вы не возражаете, можете ли вы попробовать сгенерировать модель из базы данных, используя эту версию?

Rubemlrm 08.05.2018 17:08

Без проблем. Мой тест сработал. В приведенном выше ответе по ссылке есть немного об удалении версии MySQL для Visual Studio по умолчанию и установке последней версии для разработки (2.0.5). По сути, я не думаю, что Oracle на самом деле тестирует программное обеспечение MySQL, которое производит.

7 Reeds 08.05.2018 17:28

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

Rubemlrm 08.05.2018 17:49

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

7 Reeds 08.05.2018 19:57

Мне удалось решить эту проблему с помощью следующей конфигурации в Web.config

<entityFramework>
  <defaultConnectionFactory type = "MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  <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.EntityFramework, Version=8.0.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
  </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=8.0.11.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />
  </DbProviderFactories>
</system.data>

Также я сослался на:

Итак, после трех дней собственных усилий я, НАКОНЕЦ, нашел проблему ...

Таким образом, MySql.Data и MySql.Data.Entity, которые вы должны загрузить из версий пакетов NuGet, напрямую коррелируют с версией MySql Connector / NET, которую необходимо загрузить.

И когда вы смотрите, что последняя версия MySql.Data.Entity - 6.10.7, это означает, что при загрузке Connector / NET 8 возникает несовместимость версий, что приводит к закрытию мастера сущностей данных ADO.Net.

Загрузите следующее, и БАМ он работает:

MySql for visual studio 
MySql Connector/NET v6.10.7   

Пакеты NuGet:

Entityframework v6.1.3    
MySql.Data v6.10.7    
MySql.Data.Entity v6.10.7 

Мне тоже пришлось поступить так. Я думаю, что в моем случае это связано с версией db.

Jason Amoss 12.10.2018 19:52

это сработало для меня, и вы можете скачать коннектор отсюда downloads.mysql.com/archives/c-net

Arash.Zandi 27.01.2019 09:08

Это было действительно полезно, я выбрал версию 6.10.8 для коннектора и обоих пакетов. Сработало! .. Дело в том, что версии должны быть точно такими же!

Dhrumil Bhankhar 24.02.2019 11:07

Возможно полезный ресурс: dev.mysql.com/doc/connector-net/en/connector-net-versions.ht‌ ml

jing 21.11.2019 10:07

Стоит отметить одну вещь:

Вам понадобится другой пакет Mysql EntityFramework для Mysql версии 6 и версии 8. (Возможно, именно поэтому автор понизил версию своего коннектора mysql с 8 до 6).

Если у вас соединитель mysql версии 8.x.x, вам может потребоваться установить этот пакет NuGet: https://www.nuget.org/packages/MySql.Data.EntityFramework/

Если у вас соединитель mysql версии 6.x.x, вам понадобятся: https://www.nuget.org/packages/MySql.Data.Entity/

И установите ту же версию, что и ваш коннектор mysql. Иначе что-то не получится.

-Первый шаг-
используя установщик mySql: https://dev.mysql.com/downloads/installer/
Скачать
1 - маршрутизатор mySql
2 - Разъем / ODBC
3 - Коннектор / C++
4 - Коннектор / сеть
5 - Сервер MySQl
Все, ровно в версии: 8.0.12

Затем перейдите на visual studio > manage nugget packages > browse(tab) (и установите)
1 - entityFramework -> версия 6
2 - mysql.data -> версия 8.0.12
3 - mysql.data.entity -> версия 6
4 - mysql.data.entityFramework -> версия 8.0.12

Затем перейдите к visual studio > manage nugget packages > updates(tab)
обновить Google.protoBuf до версии 3.6.0

-Второй шаг-
Right click your project > Add new Item > Data (left navbar) > Ado.net Data Model
Появится диалоговое окно «Подключение», создайте новое подключение, используя свои учетные данные Mysql (версия 8.0.12).
(проверьте ввод: включите конфиденциальные данные в connectionString ..)

Вы получите ошибку! что, поскольку предварительно настроенные MySqlProviderServices поставляются с версией 8.0.11, все, что вам нужно сделать, это изменить его в файле App.config (следующий шаг). проблема в том, что когда вы идете смотреть, последняя версия MySql.Data.Entity - 6.10.7, поэтому это означает, что при загрузке Connector / NET 8 возникает несовместимость версий, что приводит к закрытию мастера сущностей данных ADO.Net.

-Третий шаг (заключительный) -
перейдите в свой файл App.config и измените тег «провайдеров», чтобы он стал таким же

<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.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />-->
      <provider invariantName = "MySql.Data.MySqlClient" type = "MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>

Вот и все, теперь создайте проект, и все готово, вы можете создать свою модель данных сущности. (сначала база данных, например ..) и сопоставьте свою базу данных MySql и запросите ее в своем проекте.
ресурсы:
https://thewikihow.com/video_xvgeeaVP4M4
https://www.devjockeys.com/blog/c-sharp/using-entity-framework-with-mysql-a-code-first-example/
https://ozanecare.com/connect-mysql-with-visual-studio-2019/
Entity Framework с базой данных mysql в первую очередь

Какую версию VS вы используете? Я вижу мастер модели данных, но он, кажется, дает сбой и снова открывает диалоговое окно «Добавить элемент».

Daniel 02.11.2020 23:18

@Daniel, это именно та проблема, о которой я упоминал, это происходит, когда у вас есть хотя бы одна другая версия компонентов, поэтому я предложил использовать те же версии, проверьте файл app.config или попробуйте переустановить правильный версия каждого компонента. ps: у меня есть Visual Studio 2019 (это работает также для Visual Studio 2017 и 2015 # проверено)

Hicham O-Sfh 03.11.2020 22:19

Другие вопросы по теме