如何在 .NET Core 中以编程方式执行 EntityFramework CLI 命令?

How to execute EntityFramework CLI commands programmatically in .NET Core?

如何在 .NET Core 中以编程方式 运行 那些 dotnet.exe ef <command> 命令?

例如,要添加迁移,我 运行 在终端 dotnet ef migrations add NewMigration 中,它确实会创建带有迁移 类 的迁移文件夹,但要创建新的迁移(例如)从 C# 代码编程?

不建议 Process.Start("cmd bla-bla") 因为代码应该是跨平台的,而且 dotnet ef 运行 无论如何都要从某个 EntityFrameworkCore 包中获取一些代码。问题是什么代码?

EF Core API 并不是真正为该场景设计的,但如果您仍然想这样做,则需要重复 "dotnet-ef.dll" 收集项目上下文和编译输出,然后手动实例化使用MigrationsOperations

https://github.com/aspnet/EntityFramework/blob/1.0.0/src/Microsoft.EntityFrameworkCore.Design.Core/Design/MigrationsOperations.cs and https://github.com/aspnet/EntityFramework/blob/1.0.0/src/Microsoft.EntityFrameworkCore.Design/Internal/OperationExecutor.cs

请注意:这些是 "Internal" API,这意味着它们的使用可能会因版本而异。 "dotnet ef" 将在当前版本 (1.0.0-preview2) 和下一个版本之间发生很大变化。 (例如,整个工具实现将发生变化。请参阅 https://github.com/aspnet/EntityFramework/issues/5334)。