SuperAPI AI 工具集

tooling

编程与开发

查看项目

更新于 10-15 21:12

技能介绍

该资料介绍 EF Core 工具链的实现细节,主要面向需要改动 dotnet-ef 命令、ef 包装器、EFCore.Tools(PMC)或 EFCore.Tasks 的开发者。

用途与组成:dotnet-ef CLI 与 Visual Studio 包管理器控制台命令,用于迁移、反向工程(scaffolding)和编译模型。三部分包括:dotnet-ef CLI(src/dotnet-ef/),其 RootCommand 解析全局选项,子命令位于 src/ef/Commands/,每个子命令先调用 MSBuild 构建,再通过 dotnet exec ef.dll 启动 OperationExecutor;PMC(src/EFCore.Tools/)为 PowerShell 模块,提供 Add-Migration、Update-Database、Scaffold-DbContext、Optimize-DbContext 等命令;MSBuild 任务(src/EFCore.Tasks/)由 NuGet 包 Microsoft.EntityFrameworkCore.Tasks 提供构建/发布时的编译模型与预编译查询生成,目标文件位于 buildTransitive/Microsoft.EntityFrameworkCore.Tasks.targets。

关键约定:修改命令或操作契约前需追踪选项到消费它的代码。外层 dotnet-ef 启动器负责构建项目并把剩余参数转发给 ef.dll,内层命令解析命令专属选项。仅展示层行为应留在内层命令,例如让 MigrationsAddCommand.Execute() 抑制完成消息,应守护其 Reporter.WriteInformation() 调用,且不得改动 IOperationExecutor.AddMigration()。只有当 Microsoft.EntityFrameworkCore.Design 中的设计时操作需要某值时,才通过 OperationExecutorBase 转发。PMC 和 EFCore.Tasks 应视为独立入口,仅在目标行为同样适用于它们时才修改。

测试与验证:CLI 测试位于 test/dotnet-ef.Tests/、test/ef.Tests/;EFCore.Tasks 没有专门测试项目,改动任务或 target 时需新建测试项目,并手动运行 dotnet build / dotnet publish 并设置 EFOptimizeContext=true 验证。工具改动需创建测试项目并手动运行受影响命令;dotnet ef migrations script 输出应与预期 DDL 一致。