【问题标题】:Migration in .Net 6.0 project to create database在 .Net 6.0 项目中迁移以创建数据库
【发布时间】:2022-11-18 06:27:57
【问题描述】:

我将迁移添加到我的 .Net 6.0 项目,当我运行命令“update-database”时,数据库已创建,但是当我不运行此命令并运行我的项目时,它不会创建数据库

【问题讨论】:

    标签: .net sql-server entity-framework .net-6.0


    【解决方案1】:

    并运行我的项目,它不会创建数据库

    您应该以编程方式运行它,如下所示:

    using (var context = new MyContext(options))
    {
      await context.Database.MigrateAsync();
    }
    

    如果没有任何挂起的迁移,这段代码什么都不做。 例如,如果您只有创建数据库和一些初始表的迁移,则不会重新创建数据库。 您可以在名为 _MigrationsHistory 的特殊表中看到已应用的迁移列表。

    您也可以运行这个(但不应用任何迁移):

    context.Database.EnsureCreated();
    

    就这样。希望它会有所帮助。

    【讨论】:

      【解决方案2】:

      在您的应用程序数据库上下文中运行 Database.Migrate,以编程方式运行命令“更新数据库”。

      public class MyContext : IdentityDbContext {
          public MyContext() {
              Database.Migrate();
          }
      }
      

      【讨论】:

      • 每次创建上下文时都在构造函数中运行同步迁移? - 这不是个好主意。我宁愿在您的应用程序的入口点附近只调用一次。
      猜你喜欢
      • 2022-11-13
      • 2022-12-03
      • 2018-09-16
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多