如何在 .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)。
如何在 .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)。