C# 如何预热EF核心?

C# 如何预热EF核心?,c#,.net,entity-framework-core,C#,.net,Entity Framework Core,EF Core的第一个查询非常慢,因为EF需要映射实体、加载程序集等。例如,第一个查询执行700ms,而下一个查询执行20ms。 如何在开始应用时预热EF?一个选项是“预热”,另一个选项是找出延迟的原因。环境是否太大了?上下文不是完整的数据模型,它应该只包含覆盖特定场景所需的尽可能多的实体。可以有多个上下文,甚至可以重用类或表。至于为什么EF很慢,这是因为它需要检查和执行迁移(如果您不希望的话,请禁用它)。EF Core不生成视图,因此没有这种延迟。数据库服务器也会缓存数据,因此第一个查询的运行

EF Core的第一个查询非常慢,因为EF需要映射实体、加载程序集等。例如,第一个查询执行700ms,而下一个查询执行20ms。
如何在开始应用时预热EF?

一个选项是“预热”,另一个选项是找出延迟的原因。环境是否太大了?上下文不是完整的数据模型,它应该只包含覆盖特定场景所需的尽可能多的实体。可以有多个上下文,甚至可以重用类或表。至于为什么EF很慢,这是因为它需要检查和执行迁移(如果您不希望的话,请禁用它)。EF Core不生成视图,因此没有这种延迟。数据库服务器也会缓存数据,因此第一个查询的运行速度总是比从缓存数据中受益的后续查询的运行速度慢。@FatikhanGasimov这不会有帮助-EF Core不会生成视图。我建议对应用程序进行分析,以了解到底是什么导致了速度变慢。如果您有一个web应用程序,请添加eg MiniProfiler并检查在应用程序的不同部分花费的时间。如果以SQL Server为目标,则可以使用扩展事件以廉价的方式跟踪调用,并查看EF Core是否正在执行迁移。您还可以将EF Core配置为使用.NET Core的日志记录并记录详细操作。@PanagiotisKanavos我想您误解了我的意思。请用一个表和100条记录创建数据库,并尝试获取所有记录。例如,第一个查询是50ms,下一个查询是3ms。与insert或update的情况相同,因此缓存结果中不会出现问题。