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

posted @ 2026-06-18 10:12  梦魇  阅读(2)  评论(0)    收藏  举报