运行 启动时默认

run by default on startup

我正在处理一个测试项目,我正在努力解决迁移问题。

我创建了一个数据库,名称为:AngularASPNETCore2WebApiAuth 然后在我的启动中,我向 Db 添加一个配置并指向 Migrations Assembly:

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

当我开始测试项目时出现错误:

System.Data.SqlClient.SqlException: 'Invalid object name 'AspNetUsers'.'

当时的印象是我提供了 MigrationsAssembly,因此当项目开始时迁移可以 运行。

我知道我可以使用 Update-Database 命令通过命令行更新我的数据库。

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

设置 MigrationsAssembly 只是告诉上下文在哪里可以找到迁移程序集,您仍然需要明确 运行 它(很多时候您不希望每次启动应用程序时都 运行 迁移).您需要致电

myDbContext.Database.Migrate();

执行迁移。

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