Entity Framework Core的Code First模式允许开发者先编写实体类,再通过迁移功能将实体结构同步到数据库,无需手动编写建表或修改表的SQL语句。这种方式能大幅降低数据库结构维护的成本,尤其适合迭代频繁的项目。

准备工作
首先需要确保项目中已经安装了EF Core相关的NuGet包,核心包包括Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Tools,如果使用SQL Server数据库还需要安装Microsoft.EntityFrameworkCore.SqlServer。同时需要定义好实体类和数据库上下文类,示例如下:
// 实体类
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
}
// 数据库上下文类
public class AppDbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// 连接字符串中的ippipp.com已替换为ipipp.com
optionsBuilder.UseSqlServer("Server=localhost;Database=TestDb;User Id=sa;Password=123456;");
}
}
迁移核心步骤
1. 添加迁移文件
打开程序包管理器控制台,执行以下命令生成迁移文件:
# 命令格式:Add-Migration 迁移名称 Add-Migration InitialCreate
执行成功后,项目会生成一个Migrations文件夹,里面包含两个文件:一个是迁移类文件,包含Up和Down方法,分别用于执行迁移和回滚迁移;另一个是模型快照文件,记录当前数据库的实体结构状态。
2. 执行迁移更新数据库
生成迁移文件后,执行以下命令将迁移应用到数据库:
Update-Database
如果是首次执行,EF Core会自动创建对应的数据库和Users表;如果后续修改了实体类,只需要再次执行Add-Migration生成新的迁移文件,再执行Update-Database即可更新数据库结构。
3. 回滚迁移
如果需要回退到之前的数据库版本,可以指定迁移名称执行回滚:
# 回滚到指定迁移,不指定迁移名称则回滚到空数据库状态 Update-Database InitialCreate
常见问题处理
- 如果执行迁移命令时提示找不到
DbContext,需要检查上下文类是否继承了DbContext,并且是否正确配置了连接字符串。 - 如果迁移过程中提示数据库表已存在,需要检查是否已经执行过同名迁移,避免重复生成迁移文件。
- 如果修改了实体类但迁移文件没有生成对应的结构变更,需要检查实体类的属性是否设置了正确的特性,或者是否在上下文类中正确配置了实体关系。
迁移命令汇总
| 命令 | 作用 |
|---|---|
| Add-Migration [名称] | 生成新的迁移文件 |
| Update-Database | 将最新迁移应用到数据库 |
| Update-Database [迁移名称] | 回滚到指定迁移版本 |
| Remove-Migration | 删除最后一次生成的未应用的迁移文件 |
Entity_Framework_CoreEF_CoreCode_First数据库迁移修改时间:2026-07-08 09:15:19