目录
前言
在 .NET 生态中,Entity Framework Core(简称 EF Core)作为主流的 ORM 框架,凭借其优雅的 LINQ 查询和便捷的数据库操作能力,深受开发者青睐。当需要与 MySQL 数据库交互时,通过 EF Core 的 MySQL 提供程序,开发者可以无缝实现对象关系映射,显著提升开发效率。本文将系统讲解如何使用 EF Core 操作 MySQL 数据库,涵盖环境配置、基础操作到高级功能的完整流程。
一、环境准备
1.1 安装 NuGet 包
通过NuGet包管理器(以 .NET 8 为例):
说明:Pomelo 提供程序是当前最活跃的开源 MySQL 驱动,以8.0.3为例,注意Microsoft.EntityFrameworkCore要对应使用8.0.13----8.0.999,不然会导致不兼容,这里以Microsoft.EntityFrameworkCore8.0.13为例。
1.2 检查NuGet包是否正常加载
检查项目文件中的配置,出现如下则加载正常
二、 配置DbContext
2.1 创建一个cs文件(文件名自取)
2.2 配置 DbContext
using Microsoft.EntityFrameworkCore;
namespace EFCore_Mysql
{
public class AppDbContext : DbContext
{
public DbSet<User> Users { get; set; } // 定义实体集合
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseMySql(
"server=localhost;database=mydatabase;user=root;password=123456;",
new MySqlServerVersion(new Version(8.0.39)) // MySQL版本
);
}
// 可选:通过Fluent API配置实体映射
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Email).HasMaxLength(255);
});
}
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
}
三、 核心操作
3.1 创建数据库(迁移)
- 生成迁移脚本:
Add-Migration InitialCreate # 包管理器控制台
- 应用迁移到数据库:
Update-Database
3.2 CRUD操作
using (var context = new AppDbContext())
{
// 添加数据
var newUser = new User { Name = "Alice", Email = "alice@example.com" };
context.Users.Add(newUser);
context.SaveChanges();
// 查询数据
var user = context.Users.FirstOrDefault(u => u.Email == "alice@example.com");
// 更新数据
if (user != null)
{
user.Name = "Alice Smith";
context.SaveChanges();
}
// 删除数据
context.Users.Remove(user);
context.SaveChanges();
}
3.3 异步操作(推荐)
// 异步查询
var users = await context.Users.Where(u => u.Name.Contains("A")).ToListAsync();
// 异步添加
await context.Users.AddAsync(newUser);
await context.SaveChangesAsync();
结语
通过 EF Core 操作 MySQL 数据库,开发者可以在保持类型安全的同时,显著提升开发效率。本文从基础环境搭建到高级功能实现,完整展示了现代 .NET 应用与 MySQL 交互的最佳实践,更多高级的应用可以自行查阅官方文档。