【发布时间】:2016-01-11 14:42:46
【问题描述】:
我一直在调试一些慢代码,看来罪魁祸首是下面发布的 EF 代码。在稍后阶段评估查询时需要 4-5 秒。我试图让它在 1 秒内运行。
我使用 SQL Server Profiler 对此进行了测试,似乎执行了一堆 SQL 脚本。它还确认在 SQL 服务器完成执行之前需要 3-4 秒。
我已经阅读了有关使用 Include() 的其他类似问题,使用它时似乎确实存在性能损失。我尝试将以下代码拆分为几个不同的查询,但没有太大区别。
知道如何让下面的代码执行得更快吗?
目前我正在开发的网络应用程序在等待以下内容完成时只显示一个空 iframe。如果我无法获得更快的执行时间,我必须将其拆分并部分加载 iframe 的数据或使用另一个异步解决方案。这里的任何想法也将不胜感激!
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
formInstance = context.FormInstanceSet
.Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormSectionDefinitions).Include(fs => fs.FormStateDefinitionEditableSections))
.Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormStateDefinitions))
.Includes(x => x.Include(fi => fi.FormSectionInstances).Include(fs => fs.FormFieldInstances).Include(ff => ff.FormFieldDefinition).Include(ffd => ffd.FormFieldMetaDataDefinition).Include(ffmdd => ffmdd.ComplexTypePropertyNames))
.Include(x => x.CurrentFormStateInstance)
.Include(x => x.Files)
.FirstOrDefault(x => x.FormInstanceIdentifier == formInstanceIdentifier);
scope.Complete();
}
【问题讨论】:
-
什么是包含(带“s”)?它是一些专有扩展吗?
-
@MichaelFreidgeim 我相信如果有意义的话,它是一种将包含链接到包含上的扩展方法。我无法再访问代码,所以我无法准确告诉你它是什么,但这是我记忆中最好的猜测。
标签: c# sql-server entity-framework linq iframe