【问题标题】:"Exception has been thrown by target of invocation" when creating controller (ASP.NET MVC 5 with MySql)创建控制器时“调用目标引发异常”(带有 MySql 的 ASP.NET MVC 5)
【发布时间】:2017-03-25 23:21:56
【问题描述】:

我正在设置一个包含两个项目的解决方案: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 提供程序。

我已经浏览了这些问题,但没有找到答案:

Exception has been thrown by the target of an invocation- while creating the controller

Application can't scaffold items

Enity Framework With MySQL

我很确定问题出在我的配置方式上。有一段时间我认为 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>

【问题讨论】:

  • 显示正在爆炸的控制器?对构造函数感兴趣。我怀疑你在构造函数中有依赖,但是框架不知道如何解决这个依赖
  • 嗨@trailmax,我在尝试创建创建控制器时遇到异常,所以我无法向您显示代码

标签: c# mysql asp.net-mvc-5 entity-framework-6


【解决方案1】:

好的,我不确定我是如何解决这个问题的,但我认为我应该尝试描述一下。我以同样的方式重新开始我的解决方案并创建了实体模型。然后,我没有使用 dev.mysql.com 上那篇文章的 providers 标签中的代码(上面的链接),而是在我的 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 中。然后我就可以用脚手架创建控制器了。

【讨论】:

    【解决方案2】:

    迟到的答案,但我希望它可以帮助某人 我有同样的问题,我只是通过 nuget 包管理器控制台卸载并重新安装实体框架来解决它。 o 运行包管理器控制台:

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

    删除:

    UnInstall-Package EntityFramework
    

    重新安装:

    Install-Package EntityFramework
    

    我希望这也适用于你

    【讨论】:

      【解决方案3】:

      经过 8 小时的 EFPowerTools 调试,我发现在 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\PrivateAssemblies 是 Mysq.Data 和 Mysql.Data.Ef6,它们是不同的从我的网络配置 [6.10.9] 中的版本 [6.9.8] 我将 bin 6.10.9 中的版本复制到上面的 PrivateAssemblies 文件夹中,一切正常。

      【讨论】:

        猜你喜欢
        • 2014-09-03
        • 2017-10-31
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 2015-03-02
        • 2014-11-18
        • 1970-01-01
        • 2011-05-05
        相关资源
        最近更新 更多