EntityFrameworkCore-生成ExtendSF数据迁移的命令
生成ExtendSF数据迁移的命令
用于生成 ExtendSF 数据库。
帮助开发人员在自己的开发环境里搭建 ExtendSF 数据库。
目录
1. 环境准备
1.1 确定 dotnet-ef 的版本
dotnet ef --version
如果没有安装:
# 全局安装最新版本
dotnet tool install --global dotnet-ef
如果需要指定版本(例如与项目EF Core版本匹配),可以加上 --version 参数:
dotnet tool install --global dotnet-ef --version 10.0.9
注意:
dotnet-ef全局工具版本应与项目引用的Microsoft.EntityFrameworkCore.Design和数据库提供程序包的版本尽可能一致,以避免兼容性问题。
1.2 安装必要的 NuGet 包
MyApp.Ef.ExtendSF 项目里已经安装了以下三个NuGet包:
dotnet add package Microsoft.EntityFrameworkCore --version 10.0.9
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 10.0.9
# 如果需要使用命令行工具,还需添加:
dotnet add package Microsoft.EntityFrameworkCore.Design --version 10.0.9
2. 数据迁移(Migrations)
2.1 创建迁移
当对实体类做了修改(例如,添加、删除或修改了一个属性),就需要运行命令来生成一个迁移文件。
注意:
请在EntityFramework Core项目 MyApp.Ef.ExtendSF 的目录下运行命令。
# dotnet ef migrations add [迁移名称]
dotnet ef migrations add Initial_Migrations --project .\MyApp.Ef.ExtendSF.csproj --context ISS.MyApp.Ef.ExtendSF.ExtendSFDbContext
- 迁移名称:应该是一个具有描述性的名字,比如 AddUserTable 或 UpdateOrderColumn。
- 生成的文件:命令会在项目根目录下创建一个 Migrations 文件夹,里面会包含:
- [时间戳]_[迁移名称].cs:主迁移文件,包含 Up 和 Down 方法。
- [时间戳]_[迁移名称].Designer.cs:迁移的元数据文件。
- [DbContext名称]ModelSnapshot.cs:当前模型的快照,用于检测下一次的变化
2.2 应用数据迁移到数据库
2.2.1 指定数据库连接字符串
在 .\Shared\MyApp.Ef.ExtendSF\ExtendSFDbContextFactory.cs 里硬编码上数据库连接字符串,但注意不要提交到 git 。
string connectionString = null; // 在执行 “dotnet ef ...” 命令时,写上真实的数据库连接字符串。但注意不要提交到 git 。
connectionString = "Server=.;Database=my_app_extendsf_dev;Trusted_Connection=True;TrustServerCertificate=true;";
2.2.2 执行更新的迁移命令
此命令会将所有未应用的迁移按顺序应用到数据库,使数据库架构与当前的实体模型保持同步。
建议只在开发环境里使用。
# 更新到最新版本
dotnet ef database update
# 更新到指定名称的迁移版本(可用于回滚)
# dotnet ef database update [迁移名称]
dotnet ef database update Initial_Migrations
2.2.3 高级操作:生成 SQL 脚本
将迁移应用到生产环境的推荐方式是生成 SQL 脚本。而不是执行 dotnet ef database update 命令。
# 生成从空白数据库到最新迁移的 SQL 脚本。会在PowerShell控制台上显示可以执行的脚本。
# 并且注意此命令是没有指定迁移名称的,所以将会生成一个“空数据库到最新迁移”的完整脚本。
dotnet ef migrations script
# 保存到文件
dotnet ef migrations script -o .\Migrations.sql
# 生成从指定迁移到最新迁移的 SQL 脚本。注意如果数据库状态已经是 Initial_Migrations 应用后的状态,且没有更新的迁移,那么生成的脚本就是空的。
# dotnet ef migrations script [起始迁移名称]
dotnet ef migrations script Initial_Migrations
# 生成幂等(Idempotent)脚本,脚本会智能判断并仅应用未执行的迁移
dotnet ef migrations script --idempotent
- 在命令中加上 -o 或 --output 参数,并指定想要保存的文件路径。
3. 约束与要求
交付给客户的项目的源代码里,不要添加 migrations 的内容。
4. 附录
4.1 FAQ
- Q1:如何获取 DbContext 的名称
A1:
# 进入 Shared\MyApp.Ef.ExtendSF\ 目录
dotnet ef dbcontext list `
--project .\MyApp.Ef.ExtendSF.csproj
4.2 文档变更记录
| 版本 | 日期 | 变更内容 | 变更人 |
|---|---|---|---|
| 1.0 | 2026-06-17 | 初始版本 | Me |

浙公网安备 33010602011771号