【发布时间】:2021-01-02 09:24:18
【问题描述】:
在我的 ASP.Net 核心应用程序中,Startup 类有许多不需要进行迁移的东西。根据This,似乎我可以创建一个 DesignTimeFactory,它将准备指定的上下文并将其用于迁移目的。
所以我创建了实现 IDesignTimeDbContextFactory 的简单类,该类将简单地接受一个参数,对其进行一些处理,然后返回 MigrationContext 以在 CreateDbContext(string[] args) 中完成其余工作。
我的问题是当我从控制台运行 Add-Migration 命令时,它仍然执行 StartUp 类。 .我认为对于 DesignTimeFactory,它不应该尝试连接所有内容,而只需使用工厂返回的上下文并将其用于迁移目的。
有没有办法避免执行 Startup 类
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
Debugger.Launch();
webBuilder.UseStartup<Startup>();
});
并且仅仅依靠 DBContextFactory 进行迁移?所以 Startup 类只在运行时执行
【问题讨论】:
-
您的类实现
IDesignTimeDbContextFactory可能有问题,这会阻止 EF Core 查找/使用它。使用-Verbose选项运行Add-Migration并查看/发布输出。
标签: asp.net-core entity-framework-core