如本文所述,我在 ASP.NET Core 项目的启动中播种数据库数据,如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope()) {
var context = serviceScope.ServiceProvider.GetService<MyContext>();
context.Database.Migrate();
context.EnsureSeedData();
}
}
但同一篇文章还建议手动播种数据,
请注意,一般情况下,建议手动应用这些操作(而不是在启动时自动执行迁移和播种),以避免在有多个服务器时出现争用情况和意外更改。
我更喜欢使用 dotnet 工具,如下所示:
dotnet seed -c <Context> -s <SeedData>
其中:
- Context 是要使用的 DbContext。如果未指定,则使用默认值。
- SeedData 是一个包含数据插入逻辑的类。
是否可以创建这样的自定义 dotnet 工具?
DbContext 可以在工具内部使用吗?