[英]Mysql Entity framework exception
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 日)
這是對所有新開發人員的書面思考,如果您不同意任何內容,請發表評論,我只是說明了對我有用的內容,旨在提供幫助
首先,我會告訴你我的技術
申請詳情:
安裝在 Windows 10 機器上:
安裝的 NuGet 包:
除了 MySQL Workbench 之外,您必須擁有上述軟件包和軟件才能工作
連接器/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.