加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 实体框架MVC慢页面加载

发布时间:2020-12-16 10:02:10 所属栏目:asp.Net 来源:网络整理
导读:我有一个在 Windows Azure上运行的Web应用程序. 它使用存储库模式使用ASP.Net 4.0,MVC 3,Entity Framework 4.1,SQL Server 2008构建. 该应用程序表现非常好,直到最近.我们的大多数客户都有几百行数据,但其中一行开始达到2000.这大大减慢了页面加载时间(在某
我有一个在 Windows Azure上运行的Web应用程序.
它使用存储库模式使用ASP.Net 4.0,MVC 3,Entity Framework 4.1,SQL Server 2008构建.

该应用程序表现非常好,直到最近.我们的大多数客户都有几百行数据,但其中一行开始达到2000.这大大减慢了页面加载时间(在某些页面上为15 – 20秒).

我们刚刚开始使用MiniProfiler,这表明我们有一个非常繁琐的应用程序 – 具有重复的SQL调用.

为了尽可能多地提供细节并弄清楚我们如何做得更好,我会解释一些正在做的事情.

我们有一个基本控制器,它有两个受保护的对象(CurrentUser和CurrentCompany).我们在动作中使用了这些,但每次都会击中DB.所以,我假设我们需要在第一次将这些对象存储在会话中.围绕这些物体会有很大的开销吗?稍后访问他们的关系怎么样(CurrentCompany.Offices.First()等)?

我们根据这些对象获取每个页面的数据:选择,排序,过滤它们的关系,例如:

CurrentCompany.Employees.Where(r => r.StatusId = Enums.Statuses.Active);

这里’CurrentCompany.Employees’返回一个EntityCollection,但Where将其更改为IEnumerable.我听说IQueryable是要走的路吗?

我还读到,EF很适合快速启动和运行,但你必须做一些调整以确保它能够很好地处理大量数据.根据我的阅读,即使你只要求2列,它也会带回整行?

因此,考虑到所有这些 – 有人可以指出我应该做些什么来为更大的客户做出这种规模.毕竟2000行并不多.我们应该使用views / stored procs吗?

有很多资源在那里解释如何使用基本选择等方式获得EF设置 – 但是一旦数据集变大,就没有任何东西真正被剥夺了.

任何帮助将不胜感激.
布赖恩

解决方法

你在做多少急切加载?这是我们发现的一个主要性能影响,解决它我们开始使用 Entlib Caching Application Block缓存属性 然后将它们从缓存中合并到对象中,然后从DB中获取它们

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读