![](/img/trans.png)
[英]Using a different connection provider for Entity Framework on ASP.NET Core
[英]Entity Framework using the wrong connection provider
我正在嘗試將 Entity Framework 5(代碼優先)用於 ASP.NET Web 窗體應用程序,我以前有一個使用 MySQL 連接運行的基本實現,我也成功地使用 SQL Server Compact 4 處理桌面應用程序.
我遇到的問題是使用 EF5 時出現錯誤
在配置中找不到指定的商店提供程序,或者指定的商店提供程序無效。
這是非常小的幫助。
升級到 EF6-rc1 給了我更有用的錯誤
具有不變名稱“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在計算機或應用程序配置文件中注冊,或者無法加載。 有關詳細信息,請參閱內部異常。
至少我現在知道“問題”是什么。
我的問題是我已經從項目中刪除了所有 MySQL 的痕跡,項目沒有理由嘗試加載 MySQL 提供程序。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
<connectionStrings>
<add name="im_customerdb" connectionString="Data Source=|DataDirectory|\CustomerData.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
這些是我的 web.config 文件的摘錄,如果有任何其他相關部分可能指向解決方案,請告訴我。
我已經在解決方案中的每個文件中對 MySQL 一詞進行了文本搜索,並且沒有對 MySQL 的引用。 我已經在源代碼控制之外檢查了項目的干凈版本,以確保在清除項目構建文件時我沒有遺漏任何文件。
任何人都可以提供有關我應該在哪里查看以確定 EF 為何堅持加載 MySQL 提供程序的任何線索?
問候, 安東尼
*編輯: *只是添加異常在第一次訪問數據庫上下文時拋出,從堆棧跟蹤中,在初始化數據庫時拋出異常。 我還注意到一些非常奇特的東西; 數據庫文件被正確創建,看起來EF然后拒絕使用它並嘗試使用MySQL。
問題很老,但可能這對某人有幫助。
我在從 Oracle 過渡到 MS SQL Server 時遇到了同樣的問題。 最終,代碼遷移似乎是問題的根本原因。 在切換到另一個數據庫提供程序后,您不能將它們保持原樣。 因此,您必須為新的數據庫提供程序重新生成遷移。
我在不同的分辨率下遇到了同樣的問題,所以我會繼續在這里發布它供下一個搜索的人使用。
我在<connectionStrings></connnectionStrings>
部分的 web 配置中列出了我的連接字符串。 它似乎正在讀取連接字符串,但不是providerName
。
我看了很長時間才意識到我不必要地把它放在了<runtime></runtime>
部分。
當我將<connectionStrings>
放回<configuration>
的根目錄時,Entity Framework 再次開始使用正確的提供程序。
我最近遇到了同樣的問題,您的 App.config 文件中存在問題。 只需重新創建它,它就會起作用。 (創建一個黑色項目並復制其默認的 app.config 並替換它)。 然后重新安裝nuget包。
一切順利。
上面的答案都沒有為我解決問題。 我最終創建了一個新的解決方案並復制了所有源代碼(web.config 和 Migrations 除外)並且它起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.