一篇搞定 dotnet ef:EF Core 常用命令与实战指南

Leo
Leo
发布时间:2026-08-23 | 69人浏览过
原创

前言

很多人第一次接触 dotnet ef,卡住的并不是命令本身,而是不清楚它到底依赖什么、该在什么项目里执行、出了问题该往哪查。本文按日常开发顺序,把 EF Core 常用命令、参数差异和两类典型流程放到一起讲清楚,读完你不仅能直接上手,也能判断多项目架构、生产部署和逆向工程时该怎么选命令。

一篇搞定 dotnet ef:EF Core 常用命令与实战指南 的核心流程信息图
一篇搞定 dotnet ef:EF Core用简体中文信息图概括一篇搞定 dotnet ef:EF Core的核心流程、关键规则与实践要点。

很多人第一次接触 dotnet ef,卡住的并不是命令本身,而是不清楚它到底依赖什么、该在什么项目里执行、出了问题该往哪查。本文按日常开发顺序,把 EF Core 常用命令、参数差异和两类典型流程放到一起讲清楚,读完你不仅能直接上手,也能判断多项目架构、生产部署和逆向工程时该怎么选命令。

先弄清楚:dotnet ef 是什么,执行前需要什么

EF Core 是 .NET 的 ORM 框架,支持 Code First 和 Database First;dotnet ef 则是配套的 CLI 工具,用来处理迁移、数据库更新、逆向生成实体以及上下文诊断等工作。

先弄清楚:dotnet ef 是什么,执行前 对应的技术说明图
先弄清楚:dotnet ef 是什么,执行前展示先弄清楚:dotnet ef 是什么,执行前涉及的工具作用、执行步骤与结果判断。

在真正执行命令前,有两个前提需要确认:

项目说明
EF Core.NET 的 ORM 框架,支持 Code First、Database First。
dotnet ef一个 CLI 工具,用于管理 EF Core 迁移、数据库操作。
安装方式通常安装在项目中(推荐):
dotnet add package Microsoft.EntityFrameworkCore.Design
全局工具:dotnet tool install --global dotnet-ef
使用位置在包含 *.csproj 的目录执行,或者使用 --project 指定项目路径。

要想执行任何 dotnet ef 命令,都得先在 csproj 中包含 Microsoft.EntityFrameworkCore.Design 包。

dotnet ef 常用命令一览

如果你只想先建立一个整体认知,下面这张表基本覆盖了日常开发里最常用的命令。

dotnet ef 常用命令一览 对应的技术说明图
dotnet ef 常用命令一览展示dotnet ef 常用命令一览涉及的工具作用、执行步骤与结果判断。
命令作用典型场景
dotnet ef migrations add添加新的数据库迁移增加或修改实体模型后
dotnet ef migrations list查看已有迁移确认数据库版本
dotnet ef migrations remove删除最新迁移回滚刚添加但未应用的迁移
dotnet ef migrations script生成 SQL 脚本手工执行迁移
dotnet ef database update更新数据库到指定迁移同步数据库与模型
dotnet ef database drop删除数据库重置开发环境
dotnet ef dbcontext info查看 DbContext 信息调试上下文配置
dotnet ef dbcontext list列出可用 DbContext多上下文项目
dotnet ef dbcontext scaffold根据现有数据库生成实体Database First 逆向工程
dotnet ef dbcontext optimize预生成模型快照以提升启动速度高性能场景

迁移相关命令怎么用

1. 创建迁移:模型变更后的第一步

dotnet ef migrations add InitialCreate

执行后会在 Migrations/ 目录下生成两类关键文件:

  • YYYYMMDDHHMMSS_InitialCreate.cs:迁移代码
  • AppDbContextModelSnapshot.cs:模型快照文件

常用参数如下:

参数说明示例
--project指定目标项目--project ./MyApp
--startup-project指定包含 Program.cs 的启动项目--startup-project ./MyApp.Web
--context指定 DbContext--context AppDbContext
--output-dir指定迁移文件夹--output-dir Data/Migrations

多项目架构里,--project 和 --startup-project 往往要同时指定。前者决定迁移文件加到哪里,后者决定工具在设计时从哪个启动项目读取配置、连接字符串和模型设置。若 EF Core 上下文和实体放在类库,而 Web/Console 项目负责启动,这两个参数通常缺一不可。

2. 应用迁移:把模型同步到数据库

dotnet ef database update
  • 将数据库更新到最新迁移。
  • 如果数据库不存在,会自动创建。

如果你要升级或回滚到某个特定版本,可以直接指定迁移名:

dotnet ef database update InitialCreate

这条命令会把数据库调整到指定迁移对应的状态,而不一定总是更新到最新版本。

3. 查看、删除和导出迁移脚本

先看历史迁移:

dotnet ef migrations list

输出示例:

20250922121212_InitialCreate
20250923104530_AddUserTable

如果刚创建的迁移还没执行过,可以删除最后一条迁移:

dotnet ef migrations remove
  • 删除最新迁移文件。
  • 仅限未执行 database update 的迁移。

如果生产环境不能直接跑 CLI,更常见的做法是先导出 SQL:

dotnet ef migrations script
  • 生成从初始数据库到最新迁移的 SQL 脚本。
  • 也可以指定起止迁移范围。
dotnet ef migrations script InitialCreate AddUserTable -o update.sql

DbContext 诊断与数据库管理命令

删除数据库

dotnet ef database drop
  • 交互式确认后删除数据库。
  • 可加 --force 跳过确认。

这条命令更适合本地开发环境重置,不适合直接拿到生产环境使用。

查看上下文信息和可用上下文

调试配置时,先看当前上下文解析到了什么:

dotnet ef dbcontext info

输出数据库提供程序、连接字符串等信息。

如果一个解决方案里有多个上下文,可以先列出来:

dotnet ef dbcontext list

这在多上下文项目里很有用,能快速确认可用的 DbContext 名称。

模型预编译优化

EF Core 6+ 提供了模型预编译能力:

dotnet ef dbcontext optimize
  • 在编译时预生成模型元数据,提升启动速度。
  • 更适合大型数据库或高性能场景。

Database First:如何从现有数据库生成实体

如果项目不是从实体出发,而是要接入一个已经存在的数据库,可以使用逆向工程:

dotnet ef dbcontext scaffold 
"Server=localhost;Database=MyDb;User Id=sa;Password=Passw0rd;" 
Microsoft.EntityFrameworkCore.SqlServer 
--output-dir Models --context MyDbContext

常用参数:

参数说明
--schema指定数据库模式
--table指定表(可多次指定)
--context-dir指定 DbContext 文件夹
--force覆盖已有文件
--use-database-names保留数据库原始命名(不做 PascalCase 转换)

这条命令适合已有数据库接入新项目,或者需要快速生成基础实体和上下文的场景。

两种最常见的开发流程

Code First 开发流程

# 1. 添加初始迁移
dotnet ef migrations add InitialCreate

# 2. 创建/更新数据库
dotnet ef database update

# 3. 修改实体模型后生成新迁移
dotnet ef migrations add AddUserTable

# 4. 应用到数据库
dotnet ef database update

这套流程适合实体模型由应用代码主导的项目,也是 EF Core 最常见的使用方式。

Database First 开发流程

# 从现有数据库生成实体与上下文
dotnet ef dbcontext scaffold 
"Server=localhost;Database=MyDb;User Id=sa;Password=Passw0rd;" 
Microsoft.EntityFrameworkCore.SqlServer 
--output-dir Models

当数据库结构已经由外部系统或 DBA 维护时,这条路线通常更贴近真实项目分工。

常见问题与排查技巧

问题解决方案
找不到 dotnet ef 命令dotnet tool install --global dotnet-ef
提示找不到 DbContext检查 --startup-project 或 --context 是否指定正确
跨项目调用失败使用 --project 指定包含迁移的类库项目,--startup-project 指定启动项目
数据库连接不生效检查 Program.cs 中 UseSqlServer/UseNpgsql 配置
生产环境手动部署使用 dotnet ef migrations script 生成 SQL 并在 DBA 审核后执行

最后再记住这几个高频命令

命令场景
dotnet ef migrations add创建迁移
dotnet ef database update同步数据库
dotnet ef migrations list查看迁移历史
dotnet ef dbcontext scaffold逆向工程
dotnet ef migrations script生成 SQL 脚本

如果你平时主要做 Code First,优先熟悉 migrations add、database update 和 migrations script 这三条命令就够了;如果是接入既有库表,则重点放在 dbcontext scaffold 以及多项目参数配置上。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表