提高实体框架linq查询的性能

时间:2016-10-24 10:01:37

标签: c# entity-framework linq

我们正在使用Entity Framework中的视图。当我在SQL Server中执行程序视图时,它在2秒内快速呈现。我已经创建了简单的linq查询/ lambda表达式来获取输出或应用程序但是它需要2分钟以上才能得到最终结果。我不确定在后端(SQL Server)中如何快速运行相同的视图,当我通过Entity Framework使用它时会产生问题。

C#

  this.db.progamview.Where(x =>
                            x.pId== 6&&
                              x.qId== 12
                             && x.RId== 20151
                            && x.cId== 102)

我试图设置超时但仍然无效。当我们处理大型数据集或如何处理EF中检索大型数据集的视图时,我们可以在哪些方面提高实体框架的性能?

尝试了如下所示的AsNotracking方法,但没有运气。

this.db.progamview.Where(x => x.pId== 6 && x.qId== 12 && x.RId== 20151 && x.cId== 
102).AsNoTracking();

Version: EF6.1

它返回18列。我需要在前端显示所有列。

尝试了以下方法,但仍然得到输出太晚了。即需要4-5分钟才能得出结果。

  1. 上下文中的超时属性

  2. AsNotracking方法

  3. 下面的客户统计截图

    enter image description here

    还有其他更好的方法来改善效果吗?

2 个答案:

答案 0 :(得分:0)

使用AsNoTracking(),如下所示。

this.db.progamview.Where(x => x.pId== 6 && x.qId== 12 && x.RId== 20151 && x.cId== 
102).AsNoTracking();

AsNoTracking()

更新: Performance Considerations for EF 6

答案 1 :(得分:0)

您可以在数据库中添加索引。 如果您首先使用代码,则可以添加[Index]属性。