【问题标题】:Mysql Entity framework exceptionMysql 实体框架异常
【发布时间】:2019-01-30 14:52:00
【问题描述】:
  • .Net 框架:4.7.2
  • MySql 服务器安装:8.0.12
  • MySql 连接器/网络:8.0.12
  • 实体框架:6.2.0
  • MySql.Data : 8.0.12
  • MySql.Data.EntityFramework: 8.0.12

Web.config 配置

<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.MySqlProviderServices, 
           MySql.Data.EntityFramework, Version=8.0.12.0, Culture=neutral, 
           PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>
<connectionStrings>
    <add name="DefaultConnection" 
       connectionString="server=localhost;user=root;database=app;password=root;" 
       providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<providers>
      <provider invariantName="MySql.Data.MySqlClient" 
                type="MySql.Data.MySqlClient.MySqlProviderServices, 
                MySql.Data.EntityFramework, Version=8.0.12, Culture=neutral, 
                PublicKeyToken=c5687fc88969c44d"/>
</providers>

连接数据库时,出现如下异常: The requested .Net Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.

【问题讨论】:

    标签: c# mysql entity-framework


    【解决方案1】:

    &lt;DbProviderFactories&gt;中的配置信息不正确。根据MySQL Connector/NET documentation 应该是:

    <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.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
       </DbProviderFactories>
    </system.data>
    

    【讨论】:

      【解决方案2】:

      好的,这适用于 2021 年的所有开发者(日期:2021 年 1 月 2 日)

      这是对所有新开发者的书面思考,如果您不同意任何意见,请发表评论,我只是陈述了对我有用的内容,以提供帮助

      首先,我会告诉你我的技术

      申请详情:

      • C# 上的 WPF Dekstop 应用程序
      • 框架为 (.NetFramework 4.7.2)
      • 数据库是 MySQL

      安装在 Windows 10 机器上:

      • Visual Studio 2019 (16.8.2)
      • MySQL [服务器 + 工作台 + Shell] (8.0.22)
      • 连接器/NET (8.0.22)
      • 适用于 Visual Studio 的 MySQL (1.2.9)

      已安装 NuGet 包:

      • 实体框架 (6.4.4)
      • MySQL.Data (8.0.22)
      • MySql.Data.EntityFramework (8.0.22)

      您必须遵守的规则

      1. 您必须拥有上述软件包和软件才能使其工作,除了 MySQL 工作台

      2. Connector/NET、MySQL.Data & MySql.Data.EntityFramework 的版本必须相同 它们是什么版本无关紧要,但都必须相同 例如,如果它的 6.10.9 那么所有三个必须相同,但在这种情况下 示例版本 MySql.Data.EntityFramework 更改为 MySql.Data.Entity as
        MySql.Data.EntityFramework 不适用于旧版本,而后者是 以前用过(请参考the second last comment as of this day by @DavidRomo

      对我有用的东西

      - 我已经有了上面提到的包,但出于某种原因,他们就是不会 为我工作,所以如果它对你来说是一样的,请删除 Visual Studio 的连接器和 Mysql 并再次重新安装它们,这次是从网站上,这对我有用

      • 这是在我的 App.config 文件中,我不知道为什么版本写错了 这个文件,但这是预先安装/预先编写的,我也手动尝试过 将版本更改为完全正确的版本,查看一些视频,但对我来说 没用

        <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>                
        
              ENTITY FRAMEWORK     
              <entityFramework>
          <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.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
          </providers>
        </entityFramework>```
        
        
        
      • 无论是 x64(64 位软件)还是 x86(32 位软件)MSI 从 MySQL 网站安装时的包

      • 不要关心预装的依赖包 (像充气城堡)

      • 它开始工作 'FOR ME' 是在我没有更新依赖项的时候 包,我让它安装并且不介意

      • 我尝试导入连接器随附的 Dll,但它对我不起作用 至少 ; 选择数据库优先方法后,EF6 仍然崩溃,但我也 也没有在 File 中导入其他 Dll,例如用于 充气城堡和许多其他的,所以我不知道这是否是一个因素; 所以我删除了导入的包并从 Nuget 包管理器中安装了它们 依赖关系

        这是文件位置,如果你想知道但仍然没有工作 ' FOR ME',这意味着如果你尝试了正确的方法,它可能对你有用

        文件位置:C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.22\Assemblies

      • 我亲自安装了“Connector/Net”和“MySQL for Visual Studio”MSI 包 从Mysql网站手动,我没有使用安装程序,虽然我试过了 它和它一直在从最新的包中少安装一个版本

      这花了我很多时间希望你们不必处理同样的事情

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多