我正在使用c#在新项目中工作,我们希望使用实体框架6,但每次我们想要根据我们使用的数据库生成模型。但是当我使用向导生成ADO.Net模型时,在我选择数据库和实体框架后,我点击" next"按钮,而是出现选择表格的窗口,窗口消失,没有任何类型的错误。
我正在使用Visual Studio 2017社区版,我已经安装了mysql连接器v.8.0.11。如果我将mysql连接器版本和实体框架降级到v5,一切都可以正常工作,但在我将连接器和实体框架更新到版本6之后。*我得到了上面报告的问题。
答案 0 :(得分:5)
所以我自己挣扎了三天后终于找到了问题...
因此,您必须从NuGet软件包版本中下载的MySql.Data和MySql.Data.Entity与必须下载的MySql Connector / NET的版本直接相关。
当您查找MySql.Data.Entity的最新版本为6.10.7时,因此这意味着当下载Connector / NET 8时,版本不兼容,这导致ADO.Net数据实体向导关闭。
下载以下内容,然后BAM起作用:
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
答案 1 :(得分:0)
这是您正在使用的MySQL连接器包版本的问题。就我而言,我正在使用Nuget的MySQL.Data, MySQL.Entity and MySQL.Web
。如果我在6.9.11之后使用任何版本,那么我会得到你提到的行为。
答案 2 :(得分:0)
我能够通过在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>
我也提到:
答案 3 :(得分:0)
一件事值得注意:
对于Mysql版本6和版本8,您将需要不同的Mysql EntityFramework软件包。(这可能是发布者将其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连接器完全相同的版本。否则,某些操作将无效。
答案 4 :(得分:0)
-第一步-
使用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”标签更改为类似
<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://www.youtube.com/watch?v=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 With mysql Database First