.Net Framework 4.5.2 和 Entity Framework 6 中的两种不同的数据库访问
Posted
技术标签:
【中文标题】.Net Framework 4.5.2 和 Entity Framework 6 中的两种不同的数据库访问【英文标题】:Two different database access in .Net Framework 4.5.2 and Entity Framework 6 【发布时间】:2021-11-09 01:03:05 【问题描述】:如前所述,我必须配置两个数据库,即 MSSQL 和 mysql。对于 MSSQL 案例,它可以工作,但现在我必须添加新数据库(MySQL),但在下面遇到这个问题
The type 'MySql.Data.MySqlClient.MySqlConfiguration' does not inherit from 'System.Data.Entity.DbConfiguration'.
Entity Framework code-based configuration classes must inherit from 'System.Data.Entity.DbConfiguration'.
对于我的 app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.26.0" newVersion="8.0.26.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"></remove>
<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.26.0" />
</DbProviderFactories>
</system.data>
</configuration>
【问题讨论】:
您可能需要这些程序集:dev.mysql.com/doc/connector-net/en/… @GHDevOps 我想我已经添加了程序集但仍然抛出这个错误。 web.config 中的 dbConfiguration 在哪里?你必须告诉 EF 使用什么配置。 【参考方案1】:基于此 XML:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
您可能已经安装了MySql.Data.Entity.EF6
NuGet 包。该软件包不再受支持且与MySql.Data
8.0.26 不兼容。
卸载它,然后安装MySql.Data.EntityFramework
。
(或者如果你安装了MySql.Data.Entity
,那么请注意它也不兼容,就像我的answer here一样。再次,卸载并替换为MySql.Data.EntityFramework
。)
【讨论】:
以上是关于.Net Framework 4.5.2 和 Entity Framework 6 中的两种不同的数据库访问的主要内容,如果未能解决你的问题,请参考以下文章
.Net Framework 4.5.2 和 Entity Framework 6 中的两种不同的数据库访问
.net framework 版本低于4.5.2的系统可以重装win10解决吗
[环境配置]Win10 这台计算机中已经安装了 .NET Framework 4.5.2 或版本更高的更新