You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core使用EntityFrameworkCore创建迁移时MySQL驱动报错如何解决?

报错原因

你遇到的Method 'Create' in type 'MySQLSqlTranslatingExpressionVisitorFactory' does not have an implementation报错,本质是Oracle官方MySQL EF Core驱动MySql.Data.EntityFrameworkCore 8.0.22和项目中安装的Microsoft.EntityFrameworkCore版本不兼容,该版本驱动仅支持EF Core 3.x,若项目EF Core版本为5及以上就会触发该错误。

解决方案

方案一(推荐):替换为社区维护的Pomelo MySQL驱动

Pomelo.EntityFrameworkCore.MySql是目前.NET生态最常用的MySQL EF Core驱动,版本更新及时、兼容性更好,操作步骤如下:

  • 卸载项目中已安装的MySql.Data.EntityFrameworkCore、MySql.Data相关NuGet包
  • 安装与项目.NET版本匹配的Pomelo驱动:
    • .NET Core 3.x 对应 Pomelo 3.x版本
    • .NET 5 对应 Pomelo 5.x版本
    • .NET 6 对应 Pomelo 6.x版本
    • .NET 7/8 对应对应大版本的Pomelo驱动
  • 修改Startup.cs中DbContext注册代码,替换原有UseMySQL逻辑:
services.AddDbContext<MessageDBContext>(options => 
    options.UseMySql(
        Configuration.GetConnectionString("DefaultConnection"),
        // 此处替换为你实际使用的MySQL版本
        new MySqlServerVersion(new Version(8, 0, 22))
    ));

方案二:继续使用官方驱动对齐版本

如果坚持使用Oracle官方驱动,需要严格对齐EF Core和驱动版本:

  • 首先确认项目当前安装的Microsoft.EntityFrameworkCore大版本号
  • 安装与EF Core大版本完全匹配的MySql.Data.EntityFrameworkCore版本,比如EF Core 3.1就使用8.0.22版本,EF Core 6就安装官方推出的支持EF Core 6的对应驱动版本
额外代码问题修复

你的Message实体类中TelephoneNumber字段定义为int类型存在问题:

  • int类型最大值为2147483647,无法存储11位及以上的手机号
  • MaxLength特性对int类型无效
    建议将该字段修改为string类型:
[Required]
[MaxLength(15)]
public string TelephoneNumber { get; set; }

内容的提问来源于stack exchange,提问作者Sergey Mkrtumyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 12:39:03