返回

ASP.NET Core使用EF Core连接MySQL数据库完整指南(2026最新版)

2026-04-22 ASP.NET Core EF Core MySQL 22 0

在现代Web开发中,ASP.NET Core + Entity Framework Core + MySQL 的组合越来越常见。本文将从环境准备到完整代码配置,手把手教你如何在ASP.NET Core中使用EF Core连接MySQL数据库。

EF Core连接MySQL的原理

EF Core本身是一个ORM框架,它并不直接操作数据库,而是通过“数据库提供程序(Provider)”实现对不同数据库的支持。对于MySQL,最常用的提供程序是:

  • Pomelo.EntityFrameworkCore.MySql(推荐)
  • MySql.Data.EntityFrameworkCore(官方)

其中 Pomelo 是目前社区最活跃、兼容性最好的方案 。

安装必要依赖

在你的ASP.NET Core项目中,执行以下命令安装依赖:

dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Microsoft.EntityFrameworkCore.Design

该驱动基于 MySqlConnector 实现底层连接能力 。

配置数据库连接字符串

在 appsettings.json 中添加连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=127.0.0.1;Port=3306;Database=testdb;User=root;Password=123456;"
  }
}

MySQL连接字符串通常包含 Server、User、Password 和 Database 等字段 。

 

创建DbContext

新建一个数据上下文类:

using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options)
        : base(options)
    {
    }

    public DbSet<User> Users { get; set; }
}

实体类示例:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

在Program.cs中注册MySQL

 
 

在 .NET 6+ 中(Program.cs):

using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));

var app = builder.Build();
app.Run();

这里的 UseMySql 方法用于指定数据库类型,并自动检测服务器版本。

 

执行迁移(Migration)

EF Core支持Code First方式自动创建数据库表:

dotnet ef migrations add InitialCreate
dotnet ef database update

执行后,EF Core会自动在MySQL中创建表结构 。

 

简单数据操作示例

在控制器中注入DbContext:

public class UserController : Controller
{
    private readonly AppDbContext _context;

    public UserController(AppDbContext context)
    {
        _context = context;
    }

    public IActionResult Index()
    {
        var users = _context.Users.ToList();
        return View(users);
    }
}

EF Core会自动将LINQ转换为SQL语句执行 。

常见问题与优化建议

1. 连接失败

  • 检查MySQL服务是否启动
  • 确认端口(默认3306)开放

2. 字符编码问题

建议在连接字符串中加:Charset=utf8mb4;

3. 性能优化

  • 使用异步方法(ToListAsync)
  • 合理使用索引
  • 避免N+1查询

总结

整体流程可以总结为:安装驱动 → 配置连接 → 注册DbContext → 迁移数据库 → 编写业务代码。对于中大型项目,这种组合不仅开发效率高,而且易于维护,是当前.NET生态中非常主流的技术方案。

顶部