使用迁移动态创建数据库

Create database dynamically with migrations

我有一个应用程序,当用户注册时,将为该特定用户创建一个新数据库。我的问题:这是基于 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(); 才能应用它们?

ctx.Database.MigrateAsync(); 

将创建数据库并应用迁移。无需两者都做。

另一方面,可能不应该在 Controller 操作中调用它,而是在 DataAccess 层的某处调用,理想情况下调用频率较低以提高性能。我建议在 Web 应用程序首次启动或回收等时这样做。