我有一个应用程序,当用户注册时,将为该特定用户创建一个新的数据库。我的问题:这是基于EF Core 2.0 Code First动态创建数据库并应用迁移的正确方法吗?
假设我有我的上下文:CustomDbContext
,并且在注册操作中我喜欢这样:
[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel model)
{
//register user logic here
using (CustomDbContext ctx = new CustomDbContext())
{
await ctx.Database.EnsureCreatedAsync();
await ctx.Database.MigrateAsync();
}
return RedirectToPage("/Index");
}
await ctx.Database.EnsureCreatedAsync();
是否也适用迁移?或者我需要运行await ctx.Database.MigrateAsync();
来应用它们?
答案 0 :(得分:1)
ctx.Database.MigrateAsync();
将创建数据库以及应用迁移。无需两者兼顾。
另一方面,这可能不应该在Controller
动作中调用,而是在DataAccess层中的某个地方调用,理想情况下调用较少以提高性能。我建议在首次启动Web应用程序或回收等时执行此操作。