簡體   English   中英

創建控制器時“調用目標已拋出異常”(ASP.NET MVC 5 with MySql)

[英]“Exception has been thrown by target of invocation” when creating controller (ASP.NET MVC 5 with MySql)

我正在設置一個包含兩個項目的解決方案:1) 我的類庫和 2) 我的 Web UI。 最終,該網站將用於顯示來自現有 mysql 數據庫的查詢結果。

我努力創建 ado.net 實體模型有一段時間了。 但我想我在更新了 Visual Studio 的 mysql 連接器並按照此處的說明進行操作后已經弄清楚了: https : //dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

現在創建了實體模型,我正在努力創建一個帶有腳手架的簡單控制器。 我已經在 web.config 和 app.config 中仔細檢查了我的連接字符串和 ef 提供程序。

我已經瀏覽了這些問題,但沒有找到我的答案:

創建控制器時調用的目標已拋出異常

應用程序不能搭建項目

帶有 MySQL 的 Enity 框架

我很確定問題在於我如何配置它。 有一段時間我認為 app.config 中的內容無關緊要,因為 UI 項目(包含 web.config)被設置為啟動項目。 現在我很困惑。 這就是為什么我在下面都包括在內的原因。 任何見解都非常感謝。

從 web.config:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MySolution.UI-20161111094519.mdf;Initial Catalog=aspnet-MySolution.UI-20161111094519;Integrated Security=True"
      providerName="System.Data.SqlClient" />
    <add name="MySolutionEntities" connectionString="metadata=res://*/Entities.DevData.csdl|res://*/Entities.DevData.ssdl|res://*/Entities.DevData.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=****;user id=****;password=****;database=mydatabase&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.MySqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFrameworkSqlServer" />
    </providers>
  </entityFramework>

從 app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <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>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" 
                type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    <provider invariantName="MySql.Data.SqlClient" 
              type="MySql.Data.Entity.SqlServer.ProviderServices, EntityFramework.SqlServer"/></providers>
  </entityFramework>
<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=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="MySolutionEntities" connectionString="metadata=res://*/Entities.DevData.csdl|res://*/Entities.DevData.ssdl|res://*/Entities.DevData.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=****;user id=****;password=****;database=mydatabase&quot;" 
         providerName="System.Data.MySqlClient" />
  </connectionStrings>
</configuration>

好的,我不確定我是如何解決這個問題的,但我想我應該嘗試描述它。 我以同樣的方式重新開始我的解決方案並創建了實體模型。 然后,我沒有在 dev.mysql.com 上的那篇文章(上面的鏈接)中使用提供者標簽中的代碼,而是在我的 app.config 中找到了這個:

<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>

我將同樣的內容復制到我的 web.config 中。 然后我能夠用腳手架創建控制器。

遲到的答案,但我希望它可以幫助我遇到同樣問題的人,我只是通過 nuget 包管理器控制台卸載並重新安裝實體框架來解決它。 o 運行包管理器控制台:

工具 -> NuGet 包管理器 -> 包管理器控制台

刪除:

UnInstall-Package EntityFramework

重新安裝:

Install-Package EntityFramework

我希望這也適用於你

經過 8 小時的調試 EFPowerTools,我發現在 C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\PrivateAssemblies 是 Mysq.Data 和 Mysql.Data.Ef6,它們是不同的版本 [6.9 .8] 從我的 web 配置 [6.10.9] 中的那些我復制了 bin 6.10.9 中的版本到上面的 PrivateAssemblies 文件夾,一切正常。

暫無
暫無

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

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