You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:使用MySQL Connector Net 6.9.11时遇MySqlEFConfiguration继承安全报错

解决MySQL EF配置的继承安全规则冲突问题

我之前也碰到过一模一样的问题,这个错误本质是MySQL的EF组件版本和你安装的Entity Framework版本不兼容导致的安全权限冲突。6.9.11版本的MySQL Connector Net属于比较旧的版本,和你安装的最新EF版本的安全访问级别要求不匹配,才会抛出这个Inheritance security rules violated的错误。下面是亲测有效的解决步骤:

1. 彻底卸载现有冲突包

先把所有相关的NuGet包和MySQL连接器都卸载干净,避免残留文件干扰:

  • 打开NuGet包管理器控制台,执行以下命令:
    Uninstall-Package MySql.Data -Force
    Uninstall-Package MySql.Data.Entity -Force
    Uninstall-Package EntityFramework -Force
    
  • 同时在系统控制面板里找到MySQL Connector Net 6.9.11,卸载掉这个组件。

2. 安装版本匹配的组件

选择和Entity Framework兼容的新版本MySQL组件,这里推荐用EF6 + MySQL 8.0.x的组合(稳定性很好):

  • 先安装指定版本的Entity Framework(如果需要EF6的话,若用EF Core则对应MySQL的EF Core包):
    Install-Package EntityFramework -Version 6.4.4
    
  • 再安装同版本的MySQL数据和EF适配包:
    Install-Package MySql.Data -Version 8.0.33
    Install-Package MySql.Data.EntityFramework -Version 8.0.33
    

3. 验证配置文件

确保你的Web.config/App.config里的EF配置正确指向MySQL提供者,替换掉旧的配置:

<entityFramework>
  <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.EntityFramework" />
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework" />
  </providers>
</entityFramework>

同时检查连接字符串的providerName是否为MySql.Data.MySqlClient

<connectionStrings>
  <add name="YourDbContext" connectionString="server=localhost;port=3306;database=your_db;uid=root;pwd=your_pwd;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

4. 清理并重建项目

最后右键你的项目,选择清理,然后再选择生成,清除编译缓存后重新运行项目,这个错误应该就消失了。


内容的提问来源于stack exchange,提问作者Necmettin Yanık

火山引擎 最新活动