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

.NET 8 Blazor WASM使用Entity Framework Core遇TypeLoadException错误求助

问题描述

在.NET 8版本的Blazor WASM应用中,尝试通过Entity Framework Core获取MySQL数据库数据时,调用DbContext执行查询操作抛出TypeLoadException,错误信息如下:

类型MySql.Data.EntityFrameworkCore.Infrastructure.Internal.MySQLOptionsExtension+ExtensionInfo的虚表方法槽5无效,方法不存在

相关调用代码:

protected override async Task OnInitializedAsync()
{
    var a = context.CreateDbContext().Players.ToList();

    foreach (var item in a)
    {
        Console.WriteLine(item.Id);
    }
}

DbContext及实体类定义:

public class CustomDbContext : DbContext
{
    public DbSet<Player> Players {  get; set; }
    public DbSet<Tournament> Tournaments { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseMySQL("myConString");
    }
}

[Table("Players")]
public class Player
{
    public int Id { get; set; }
}
解决方法
  • 替换兼容的MySQL EF Core驱动
    你当前使用的MySql.Data.EntityFrameworkCore包已被官方标记为过时,且版本不兼容.NET 8。EF Core 8对扩展接口的虚方法做了更新,旧驱动未实现新增方法导致类型加载失败。需卸载旧包,安装官方适配.NET 8的MySql.EntityFrameworkCore包,确保版本≥8.0.33。

  • 修正DbContext配置
    使用新驱动后,保持连接字符串配置正确,示例如下:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseMySQL("server=你的数据库地址;database=数据库名;user=用户名;password=密码;");
    }
    
  • 调整Blazor WASM数据访问架构
    Blazor WASM运行在浏览器环境中,直接通过前端连接MySQL会暴露连接字符串(存在安全风险),且浏览器网络限制可能导致连接失败。建议搭建ASP.NET Core Web API作为后端,由后端处理数据库操作,Blazor WASM通过HTTP请求调用API获取数据。

  • 清理重建项目
    删除项目目录下的bin和obj文件夹,执行dotnet restore恢复依赖,重新编译运行项目。

内容的提问来源于stack exchange,提问作者Filip Mráz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:58