代码之家  ›  专栏  ›  技术社区  ›  johnny 5

启动时默认运行

  •  0
  • johnny 5  · 技术社区  · 7 年前

    我正在做一个测试项目,我正努力围绕着迁移进行思考。

    我创建了一个名为: AngularASPNETCore2WebApiAuth 然后在启动时,我向数据库添加一个配置,并指向迁移程序集:

    services.AddDbContext<ApplicationDbContext>(options =>
          options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
              b => b.MigrationsAssembly("AngularASPNETCore2WebApiAuth")));
    

    当我开始我的测试项目时,我得到一个错误:

    system.data.sqlclient.sqlException:“无效的对象名”aspnetUsers“。”

    我觉得我已经提供了迁移组件,这样项目启动时就可以运行迁移。

    我知道我可以使用update database命令通过命令行更新数据库。

    但是,如果应用程序在默认情况下不运行迁移,为什么我必须在启动时提供一个程序集。启动时如何默认运行迁移?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ben    7 年前

    设置migrations assembly只是告诉上下文在哪里找到migrations程序集,您仍然需要明确地运行它(很多时候,您不希望每次启动应用程序时都运行migrations)。你需要打电话

    myDbContext.Database.Migrate();
    

    执行迁移。

    https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#apply-migrations-at-runtime