以前我必须实现 IDesignTimeDbContextFactory 才能运行迁移,例如: PM > 添加迁移初始 PM > 更新-数据库
如果不是,控制台会抛出一个错误并将我带到这里:https://learn.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
关于c# - IDesignTimeDbContextFactory 并不总是需要的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46202845/