我想知道是否可以先加速使用 EF 代码进行的第一个查询。
我制作了一个包含 2 个字段的实体的小型测试程序,第一个查询需要 2.2 秒,第二个查询(完全相同)需要 0.006 秒。
我已经在预编译视图,所以在这里没有帮助。我认为问题在于在内存中构建模型需要一些时间,但是需要那么长时间吗?有没有办法像视图一样预编译这个模型?
我想知道是否可以先加速使用 EF 代码进行的第一个查询。
我制作了一个包含 2 个字段的实体的小型测试程序,第一个查询需要 2.2 秒,第二个查询(完全相同)需要 0.006 秒。
我已经在预编译视图,所以在这里没有帮助。我认为问题在于在内存中构建模型需要一些时间,但是需要那么长时间吗?有没有办法像视图一样预编译这个模型?
当您进行第一次查询时,EF 会自行初始化,这需要一些时间。我认为加快 EF 的基础架构初始化没有太多工作要做,但是,如果您真正想要的是加快您所做的第一个查询而不是 EF 的初始化本身,那么您可以尝试强制 EF 进行初始化在运行您的第一个查询之前。
using (var db = new MyContext())
{
db.Database.Initialize(force: true);
}
这篇文章:Squash Entity Framework startup time with pre-compiled views详细描述了一个解决方案。
它涉及使用 Entity Framework Power Tools 中的优化实体数据模型选项来生成预编译的.Views类文件。