以前我必须实现IDesignTimeDbContextFactory才能运行迁移,例如:
PM>添加迁移初始
PM>更新数据库
如果不是,则控制台抛出错误,并在此引导我:https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext#use-idesigntimedbcontextfactory。
因此,我按照建议进行操作,并开始进行迁移。
之后,我创建了新项目,而不必实现IDesignTimeDbContextFactory。迁移仍然有效。这怎么可能?
所有项目上的.NET Core版本相同(2.0)。
我们是否总是需要创建一个IDesignTimeDbContextFactory,还是仅在某些情况下?
谢谢!
最佳答案
好的,它开始了:
如果您的DbContext中具有默认构造函数,或者使用的是ASP.NET Core 2.0项目模板中建立的Program.BuildWebHost()模式,则通常不需要IDesignTimeDbContextFactory实现。
在2.0.0-preview1中,未使用Program.BuildWebHost(),您需要设计时工厂。
请参阅此线程以获取完整讨论:
https://github.com/aspnet/EntityFrameworkCore/issues/9033