【发布时间】:2018-05-22 22:25:44
【问题描述】:
我想问一下为什么 >dotnet ef 迁移添加 InitialMigration
这两个 program.cs 代码的行为不同
代码 1:
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
代码 2
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
使用 Code-1,我可以运行 >dotnet ef migrations add InitialMigration 而不会出错。使用 PackageManager 控制台> add-migration Initial Migration 也没有错误。
但是使用 Code-2,我在 Pakckage Manager 控制台和命令提示符上都出现错误。这是错误:
无法创建“AppDbContext”类型的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中,或查看https://go.microsoft.com/fwlink/?linkid=851728 了解设计时支持的其他模式。
据我了解,这两个代码基本上都在做同样的事情。
【问题讨论】:
-
我刚得到新信息:我认为 add-migation 或 dotnet ef migrations 命令调用了 program.cs 文件中的 BuildWebHost 方法。因此,当我在 Code-2 中更改方法名称时,这是我得到的错误: PM> Add-Migration initialmigration 在类“程序”上调用方法“BuildWebHost”时发生错误。在没有应用程序服务提供商的情况下继续。我认为,迁移命令需要 build 命令提供的 IWebHost 才能工作