实体框架

k75qkfdt  于 2021-06-25  发布在  Mysql
关注(0)|答案(5)|浏览(418)

我在一个新的c项目中工作,我们想使用EntityFramework6,但每次我们都想根据我们使用的数据库生成模型。但是,当我使用向导生成ado.net模型时,在我选择数据库和实体框架之后,我单击“下一步”按钮,而不是出现选择表的窗口,窗口将消失,没有任何类型的错误。
我使用的是visual studio 2017社区版,我已经安装了mysql connector v.8.0.11。如果我将mysql连接器版本和实体框架降级到v5,那么一切都可以正常工作,但是在我将连接器和实体框架更新到版本6之后。*我得到了上面报告的问题。

ocebsuys

ocebsuys1#

-第一步-
使用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>

仅此而已,现在构建项目,您就可以创建实体数据模型(例如,首先是数据库),Mapmysql数据库并在项目中查询它
资源:
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/
先用mysql数据库构建实体框架

t5zmwmid

t5zmwmid2#

有一件事值得注意:
mysql版本6和版本8需要不同的mysql entityframework包(这可能是海报将其mysql连接器从8降级到6的原因)
如果您的mysql连接器是8.x.x版本,则可能需要安装以下nuget软件包:https://www.nuget.org/packages/mysql.data.entityframework/
如果mysql connector是6.x.x版,则需要:https://www.nuget.org/packages/mysql.data.entity/
并安装与mysql连接器完全相同的版本。否则,有些事情就行不通了。

j2qf4p5b

j2qf4p5b3#

所以在我自己挣扎了三天之后,我终于找到了问题所在。。。
因此,必须从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
rt4zxlrg

rt4zxlrg4#

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

我还提到:
https://www.nuget.org/packages/mysql.data.entityframework (8.0.11)
https://www.nuget.org/packages/mysql.data/ (8.0.11)

uhry853o

uhry853o5#

这是您使用的mysql连接器软件包版本的问题。就我而言,我正在使用 MySQL.Data, MySQL.Entity and MySQL.Web 来自努吉。如果我使用6.9.11之后的任何版本,那么我就会得到你提到的行为。

相关问题