簡體   English   中英

Mysql 實體框架異常

[英]Mysql Entity framework exception

  • .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>

連接到 DB 時,出現如下異常: The requested .Net Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.

<DbProviderFactories>的配置信息不正確。 根據MySQL Connector/NET 文檔,它應該是:

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

好的,這適用於 2021 年的所有開發人員(日期:2021 年 1 月 2 日)

這是對所有新開發人員的書面思考,如果您不同意任何內容,請發表評論,我只是說明了對我有用的內容,旨在提供幫助

首先,我會告訴你我的技術

申請詳情:

  • C# 上的 WPF Dekstop 應用程序
  • 框架是 (.NetFramework 4.7.2)
  • 數據庫是 MySQL

安裝在 Windows 10 機器上:

  • Visual Studio 2019 (16.8.2)
  • MySQL [服務器+工作台+外殼] (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 Workbench 之外,您必須擁有上述軟件包和軟件才能工作

  2. 連接器/NET、MySQL.Data 和 MySql.Data.EntityFramework 的版本必須相同,它們是什么版本無關緊要,但都必須相同例如,如果它的 6.10.9 那么所有三個必須相同,但在本示例中,MySql.Data.EntityFramework 更改為 MySql.Data.Entity 作為
    MySql.Data.EntityFramework 不適用於舊版本,后者以前使用過(請參閱@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>```
  • 從 MySQL 網站安裝時,它是 x64(64 位軟件)還是 x86(32 位軟件)MSI 包並不重要

  • 不關心預裝的依賴包(比如充氣城堡)

  • 它開始“為我”工作的一點是當我沒有更新依賴包時,我讓它安裝並且不介意

  • 我嘗試導入連接器附帶的 Dll,但至少對我不起作用; 在選擇 DB first 方法后,EF6 仍然不斷崩潰,但我也沒有在文件中導入其他 Dll,例如 Bouncy Castle 和許多其他 Dll,所以我不知道這是否是一個因素; 所以我刪除了導入的包並從 Nuget 包管理器中安裝了它們的依賴項

    這是文件位置,如果您想知道,但這仍然不起作用“為我” ,這意味着如果您嘗試正確的方法,它可能對您有用

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

  • 我個人從 Mysql 網站手動安裝了“Connector/Net”和“MySQL for Visual Studio”MSI 包,我沒有使用安裝程序,雖然我嘗試過它,但它仍然從最新的包中少安裝一個版本

這花了我很多時間希望你們不必處理同樣的事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM