EF Core Code First 通过迁移实现从C#实体类自动生成数据库表,流程为:定义实体类和DbContext→安装工具并添加初始迁移→执行Update-Database创建库表→后续修改实体后添加增量迁移并更新。

EF Core 使用 Code First 方式从 C# 实体类自动生成数据库表,核心是通过 迁移(Migrations) 实现模型到数据库的同步。整个流程不依赖已有数据库,而是“先写类、再建库”。下面是一套清晰、可落地的完整步骤。
1. 定义实体类和 DbContext
这是起点。实体类描述数据结构,DbContext 管理实体与数据库之间的映射关系。
例如:
public class Product
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public decimal Price { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("Server=.;Database=MyAppDb;Trusted_Connection=true;");}
注意:连接字符串可根据环境放在 appsettings.json 中,用 OnConfiguring 或依赖注入方式配置更规范。
2. 安装 EF Core 工具并初始化迁移
确保项目已安装以下 NuGet 包:
-
Microsoft.EntityFrameworkCore.SqlServer(数据库提供程序) -
Microsoft.EntityFrameworkCore.Tools(设计时工具,用于命令行)
在 包管理器控制台(PMC) 或 .NET CLI 中执行:
# PMC(需选择默认项目为含 DbContext 的项目) Add-Migration InitialCreate或 CLI(在项目文件所在目录运行)
dotnet ef migrations add InitialCreate
这会在项目中生成一个 Migrations/xxx_InitialCreate.cs 文件,包含 Up()(建表)和 Down()(回滚)方法。
3. 应用迁移创建数据库和表
此时数据库还不存在,首次运行迁移会自动创建库和表:
# PMC Update-DatabaseCLI
dotnet ef database update
EF Core 会:
- 检查连接字符串指向的实例是否存在该数据库
- 若不存在,则新建数据库
- 按迁移文件中的
Up()方法执行建表、主键、索引等操作
成功后,SQL Server 中就能看到 Products 表,字段与 Product 类完全对应。
4. 后续修改实体并同步数据库
当业务变化需要加字段、改类型或新增实体时:
- 修改实体类(如给
Product加Category属性) - 再次运行
Add-Migration AddCategory(命名自定义) - 再运行
Update-Database
EF Core 会基于当前模型与上一次迁移的快照(xxx_InitialCreate_Snapshot.cs)计算差异,生成增量迁移脚本,安全升级结构。
基本上就这些。关键点在于:实体类即契约、迁移是版本控制、Update-Database 是最终落地动作。只要模型定义清晰、迁移及时提交,Code First 就非常稳健可靠。










