我已经在Windows Azure上运行的Web应用程序。 它是建立与ASP.Net 4.0,MVC 3,使用Repository模式实体框架4.1,SQL Server 2008中。
这个应用程序执行得非常好,直到最近。 我们的大多数客户都有数据的几百行,但其中一人开始达到2000+。 这已经大大放慢了页面加载时间(15 - 在一些网页上20秒)。
我们刚开始使用MiniProfiler这表明我们有重复的SQL调用一个非常健谈的APP-。
在努力,得到尽可能详细,并弄清楚如何才能把事情做得更好,我会解释一些东西,在做什么。
我们有两个保护对象(CurrentUser和CurrentCompany)基地控制器。 我们在我们的行动中使用这些不少,但它击中DB各一次。 所以,我假设我们需要存储在会话这些对象的第一次。 是否有结块围绕这些物体一笔大开销? 什么以后访问他们的关系(CurrentCompany.Offices.First(),等)?
我们得到的数据基于这些对象的每一页:选择,排序,过滤他们的关系,例如:
CurrentCompany.Employees.Where(r => r.StatusId = Enums.Statuses.Active);
这里CurrentCompany.Employees“返回EntityCollection但如果它变成了IEnumerable。 听说IQueryable的是要走的路?
我也读了EF是伟大的事情快速启动和运行,但你必须做一些调整,以确保它有很多数据的表现良好。 从我已阅读,它会带回来,即使你只问2列整行?
因此,所有在mind-能有人指出我应该做的,使这个规模更大的客户。 2000+行不算多毕竟。 我们应该使用视图/存储的特效?
有资源在那里解释如何获得EF设置基本的选择,etc-但没有真正一个scalling一次数据集变得更大的plently。
任何帮助将不胜感激。 布赖恩