我有一个应用程序,当用户注册时,将为该特定用户创建一个新数据库。我的问题:这是基于 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 应用程序首次启动或回收等时执行此操作。
关于c# - 通过迁移动态创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47247172/