【问题标题】:Inheritance security rules violated by type: 'MySql.Data.Entity.MySqlEFConfiguration'类型违反的继承安全规则:'MySql.Data.Entity.MySqlEFConfiguration'
【发布时间】:2018-04-23 23:03:52
【问题描述】:

我创建了一个 asp.net Web 应用程序,它应该连接到一个 mysql 数据库。

我正在使用带有 ado.net 实体数据模型的实体框架 6。我还遵循了以下教程:https://dev.mysql.com/doc/connectors/en/connector-net-entityframework60.html#connector-net-ef6-config

但是打电话:DbConfiguration.SetConfiguration(new MySqlEFConfiguration());

导致我的应用程序崩溃。它可能与此特定方法无关,因为创建 DBContext 也会使应用程序崩溃。

任何想法是什么导致了这个错误?

  • .NET 框架:4.6.1
  • MySql.Data.Entity.EF6:6.10.4

Web.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>
      <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient"
                type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"/>
      <provider invariantName="System.Data.SqlClient"
                type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>

<connectionStrings><add name="DatabaseEntities" connectionString="metadata=res://*/Database.Model.csdl|res://*/Database.Model.ssdl|res://*/Database.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;&quot;" providerName="System.Data.EntityClient" /></connectionStrings><system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

完全错误:

类型违反了继承安全规则: 'MySql.Data.Entity.MySqlEFConfiguration'。派生类型必须要么 匹配基本类型的安全可访问性或更少 可访问。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪 有关错误及其起源的更多信息 代码。

异常详细信息:System.TypeLoadException:类型违反了继承安全规则: 'MySql.Data.Entity.MySqlEFConfiguration'。派生类型必须要么 匹配基本类型的安全可访问性或更少 可访问。

【问题讨论】:

  • 在 6.10.5 中仍然存在问题。
  • 6.10.6 存在问题

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


【解决方案1】:

我将 MySql.Data.Entity.EF6 降级为旧版本,它解决了我的问题。

【讨论】:

  • 我已经为此奋斗了一周,你降级到了什么版本?
  • MySql.Data 和 MySql.Data.Entity 都是 6.9.10。 MySQL 连接器还有 6.9.10,MySQL for Visual Studio 1.2.7
  • 供参考:此问题在MySQL Connector GitHub repository进行跟踪
  • 确保删除已安装的 6.10.5 版 MySql.Data 和 MySql.Data.Entity NuGet 包并安装这两个包的 6.9.10 版。
  • 降级不是解决办法。 Oracle 刚刚搞砸了开源。我们所有的开发者都在受苦。
【解决方案2】:

将 MySql.Data.Entity 从 6.10.x 版本降级到 6.9.10 可以解决问题。它解决了我的问题

【讨论】:

    【解决方案3】:

    我在 6.9.10 中遇到了一些可怕的不稳定问题。它似乎也已从 NuGet 中删除。在繁重的负载下,我偶尔会收到“找不到数据库错误”。

    改用 6.9.11。这对我来说似乎很稳定。它在 NuGet 上可用。

    【讨论】:

    • 你说的是MySql.Data.Entity.EF6的版本吗?如果您是,他们似乎使用的版本比您推荐的版本更新。
    【解决方案4】:

    我这样做了,它对我有用

    1. 从 nuget 包管理器安装最新版本的 entityframwork 和 mysql.data 和 mysql.data.entity

    2. 首先自动生成模型数据库

    3. 卸载 mysql.data.entity 并安装 mysql.data.entity v 6.9.10 只需了解如何安装或卸载

    【讨论】:

      【解决方案5】:

      在 VS 2017 社区中将 MySql NuGet 包从 6.9.8 升级到 6.10.6 后,我遇到了同样的问题。我按照接受的答案的说明并降级回 6.9.x 修复了它。经过进一步调查,Oracle 已在即将发布的 6.10.7 版本中修复了该错误 (https://bugs.mysql.com/bug.php?id=89134)。

      简而言之,在 6.10.7 发布之前,降级回 6.9.x!我恢复使用 Nuget 包管理器,无需更改任何其他内容即可使其正常工作。

      【讨论】:

        【解决方案6】:

        VS2017 对我来说也是如此。我使用了 MySql.Data.Entity v6.9.10。
        在此之前,我还为 .Net 版本 6.9.10 安装了 mysql 连接器。

        • 之后,我为 MySql.Data.Entity 安装了 NuGet 包。
        • 最后一步是相应地修改web.config:
          • 连接字符串,
          • 实体框架和
          • system.data(请注意,如果您从 mysql 网站获取最后两个版本,也必须更新它们)
        • 别忘了我也加了

          DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) 
          

          在我的应用程序中启动。

        它终于奏效了:D

        【讨论】:

          【解决方案7】:

          将 nuget 包升级到 6.10.8 为我解决了这个问题

          【讨论】:

            猜你喜欢
            • 2021-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-03
            • 1970-01-01
            • 2014-02-28
            • 1970-01-01
            相关资源
            最近更新 更多