【问题标题】:MigrateDatabaseToLatestVersion performance in ASP.NETASP.NET 中的 MigrateDatabaseToLatestVersion 性能
【发布时间】:2026-02-06 06:50:02
【问题描述】:

我继承了一个使用 Entity Framework 6 的 ASP.NET 应用程序,并启用了迁移。在我的 Global.asax 中,我有这个:

using (var context = new MyContext())
{
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>());
    context.Database.Initialize(true);
}

问题是每次我的应用程序需要启动(例如由于 IIS 将其关闭)时,都会运行此逻辑,即使在大多数情况下不需要执行迁移。这会显着减慢请求的处理速度。

我在这里有什么选择?什么是最佳实践?我可以禁用它并使用包管理器控制台手动执行迁移,但这超出了目的(尽管如果没有其他选项,我准备这样做)。

【问题讨论】:

  • 自动迁移已在 EF Core 中移除(这里有一些 reasoning),所以看起来方向是手动执行迁移。
  • @IvanStoev 如果您将评论添加为答案,我会将其标记为正确答案。

标签: asp.net performance entity-framework


【解决方案1】:

EF6 自动迁移似乎引入了几个问题(不仅仅是性能),因此 EF Core 团队决定将它们从 EF Core 中删除(您可以阅读一些推理here)。

由于 EF Core 是 EF6 的继任者(实体框架的未来),因此建议(最佳实践)似乎是禁用它并手动执行迁移。

【讨论】: