簡體   English   中英

實體框架使用錯誤的連接提供程序

[英]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.

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