我想问一下为什么> 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,我可以运行&gt; dotnet ef迁移添加InitialMigration 而不会出现错误。使用PackageManager控制台&gt; 添加迁移初始迁移 也没有错误。
但是使用Code-2,我在Pakckage Manager Console和命令提示符上都出现错误。这是错误:
无法创建“AppDbContext”类型的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中,或者参阅https://go.microsoft.com/fwlink/?linkid=851728了解设计时支持的其他模式。
据我了解,这两个代码基本上都做同样的事情。
答案 0 :(得分:0)
约定在ASP.NET Core 2.0和2.1之间发生了变化。
在2.1中,静态方法应返回IWebHostBuilder
(出于工具原因)。
但是,您将需要作为2.1.300 SDK的一部分提供的dotnet ef
版本(在撰写本文时只有候选版本可用),而不是当前作为CLI工具参考提供的版本(项目文件中的DotNetCliToolReference
。
这是在版本之间更新的SPA模板的问题,这些版本现在遵循新约定但定位为2.0 - https://github.com/aspnet/templating/issues/442。
您可以轻松地将代码更改为与您提供的Code 1
示例类似,或者更新为撰写本文时可用的RC版本。