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





Это проблема с версией используемых вами пакетов коннектора MySQL. В моем случае я использую MySQL.Data, MySQL.Entity and MySQL.Web от Nuget. Если я использую любую версию после 6.9.11, я получаю указанное вами поведение.
Вероятно, ваш вопрос дублирует stackoverflow.com/questions/49036983/…
Когда я это делаю, все работает нормально, но я потерял доступ к Entity framework v6 и его требованию для этого проекта. В вашем случае вы используете v5 или v6 фреймворка entity?
Nuget говорит мне: 6.2.0
Если вы не возражаете, можете ли вы попробовать сгенерировать модель из базы данных, используя эту версию?
Без проблем. Мой тест сработал. В приведенном выше ответе по ссылке есть немного об удалении версии MySQL для Visual Studio по умолчанию и установке последней версии для разработки (2.0.5). По сути, я не думаю, что Oracle на самом деле тестирует программное обеспечение MySQL, которое производит.
попытался выполнить шаги по ссылке и получил ту же проблему. Но я попробую протестировать эти шаги на другом компьютере, просто чтобы проверить, не что-то не так с моей настройкой.
Также не забывайте о перезагрузке компьютера после удаления / переустановки. Я помню, как сильно разочаровывался в этом процессе и перезагружался после каждой операции.
Мне удалось решить эту проблему с помощью следующей конфигурации в 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.
это сработало для меня, и вы можете скачать коннектор отсюда downloads.mysql.com/archives/c-net
Это было действительно полезно, я выбрал версию 6.10.8 для коннектора и обоих пакетов. Сработало! .. Дело в том, что версии должны быть точно такими же!
Возможно полезный ресурс: dev.mysql.com/doc/connector-net/en/connector-net-versions.ht ml
Стоит отметить одну вещь:
Вам понадобится другой пакет 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, это именно та проблема, о которой я упоминал, это происходит, когда у вас есть хотя бы одна другая версия компонентов, поэтому я предложил использовать те же версии, проверьте файл app.config или попробуйте переустановить правильный версия каждого компонента. ps: у меня есть Visual Studio 2019 (это работает также для Visual Studio 2017 и 2015 # проверено)
Привет, ты нашел какое-нибудь решение?