c# - 通过迁移动态创建数据库

标签 c# asp.net-core entity-framework-migrations asp.net-core-2.0 ef-core-2.0

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

相关文章:

entity-framework - DropCreateDatabaseAlways 使用 Code First 不适用于 Azure Sql 数据库

c# - 测试条件如何基于查询结果的计数?

c# - WPF VSTS 应用程序卡在 VS 凭据提示上

c# - 为什么让我的 ODataController 有一个复数名称会阻止它工作

c# - ASP.NET Core 2.2是否支持使用Microsoft帐户外部登录?

c# - DbMigrator - 详细的代码优先迁移

c# - 使用 C# 与 NSUrlSession 的 HTTP POST 多部分表单数据

c# - .net 核心注入(inject)和解析服务

c# - 如何在 ASP.net Core WebAPI 中启用 CORS

entity-framework - MigrateDatabaseToLatestVersion 和 dbo.__MigrationHistory