【发布时间】:2018-07-06 15:42:20
【问题描述】:
我使用 EF Core 创建AppDBContext 和AppDbContextSeed:
AppDbContextSeed
public class AppDbContextSeed
{
private readonly AppDbContext _dbContext;
private UserManager<AppUser> _userManager;
private RoleManager<AppRole> _roleManager;
public AppDbContextSeed(AppDbContext dbContext, UserManager<AppUser> userManager,
RoleManager<AppRole> roleManager)
{
_dbContext = dbContext;
}
public async Task Seed()
{
...
await _dbContext.SaveChangesAsync();
}
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<AppDbContextSeed>();
}
程序.cs
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var appDbContextSeed = services.GetService<AppDbContextSeed>();
appDbContextSeed.Seed().Wait();
}
catch (Exception ex)
{
var logger = services.GetService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while seeding the database");
}
}
host.Run();
}
当我运行add-migration 和update-database 时,没有来自appDbContextSeed 的数据插入到数据库中。我做错了什么?
【问题讨论】:
-
看起来不错,但与 update-database 的(预期)关系是什么?这在启动时运行,您需要检查是否每次都需要播种。