如何在 .NET Core 中以编程方式运行这些dotnet.exe ef <command>
命令?
例如,添加迁移我正在终端dotnet ef migrations add NewMigration
中运行,它确实会创建包含迁移类的Migrations文件夹,但是要以编程方式从C#代码创建新的迁移(例如)?
不建议使用Process.Start("cmd bla-bla")
,因为代码应该是跨平台的,并且dotnet ef
无论如何都会运行某些EntityFrameworkCore包中的代码。问题是什么代码?
答案 0 :(得分:0)
EF Core API并非真正针对该场景设计,但如果你想要这样做,你需要重复“dotnet-ef.dll”的逻辑来收集项目上下文和编译输出,以及然后手动实例化并使用MigrationsOperations
。
请参阅https://github.com/aspnet/EntityFramework/blob/1.0.0/src/Microsoft.EntityFrameworkCore.Design.Core/Design/MigrationsOperations.cs和https://github.com/aspnet/EntityFramework/blob/1.0.0/src/Microsoft.EntityFrameworkCore.Design/Internal/OperationExecutor.cs
请谨慎使用:这些是“内部”API,这意味着它们的使用可能会因版本而异。 “dotnet ef”将在当前版本(1.0.0-preview2)和下一版本之间发生巨大变化。 (例如,整个工具实现将发生变化。请参阅https://github.com/aspnet/EntityFramework/issues/5334)。