EF Core如何从实体生成数据库表 EF Core Code First完整流程

来源:这里教程网 时间:2026-02-21 17:35:58 作者:

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; }
}
<p>public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }</p><pre class='brush:php;toolbar:false;'>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
<h1>或 CLI(在项目文件所在目录运行)</h1><p>dotnet ef migrations add InitialCreate</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/ai/2454" title="Deep Agent"><img
                                                                                src="https://www.herecours.com/d/file/efpub/2026/21-21/20260221140158179497.jpg" alt="Deep Agent"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/ai/2454" title="Deep Agent">Deep Agent</a>
                                                                        <p>一站式人工智能决策解决方案平台</p>
                                                                </div>
                                                                <a href="/ai/2454" title="Deep Agent" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div>

这会在项目中生成一个

Migrations/xxx_InitialCreate.cs
文件,包含
Up()
(建表)和
Down()
(回滚)方法。

3. 应用迁移创建数据库和表

此时数据库还不存在,首次运行迁移会自动创建库和表:

# PMC
Update-Database
<h1>CLI</h1><p>dotnet ef database update</p>

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 就非常稳健可靠。

相关推荐