默认在启动时运行

时间:2019-01-16 01:25:11

标签: c# .net-core ef-migrations

我正在处理一个测试项目,并且试图将自己的头放在迁移上。

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

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

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

  

System.Data.SqlClient.SqlException:'无效的对象名称'AspNetUsers'。

当时我很印象深刻,因为我已经提供了MigrationsAssembly,因此可以在项目启动时运行迁移。

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

但是,如果默认情况下未由应用程序运行迁移,为什么还要在启动时为迁移提供程序集。默认情况下,如何在启动时运行迁移?

1 个答案:

答案 0 :(得分:1)

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

myDbContext.Database.Migrate();

执行迁移。

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