asp.net – 实体框架MVC慢页面加载
我有一个在
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中获取它们
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC MultiSelectList,其中所选值未
- asp.net – 如何在DotVVM viewmodel中创建会话变量?
- asp.net-mvc-3 – 从根请求调用区域控制器
- asp.net-mvc – 如何覆盖ASP.Net MVC的默认模型绑定器,以便
- asp.net-mvc-3 – 使用Html.RadioButtonFor和Html.LabelFor
- asp.net core 2.0 webapi集成signalr
- asp.net-mvc – Razor MVC4 Url.Action无效
- asp.net-mvc-3 – 带区域的MVC – Html.ActionLink返回错误
- asp.net-mvc – 返回json中的双引号
- ASP.NET linkbutton两次提高onBeforeUnload事件
- asp.net-mvc-4 – 重载Html.LabelFor以添加’后缀
- asp.net-mvc – 在EF5迁移中将字段定义为自动增量
- ASP.NET MVC 3 HtmlHelper异常不能识别继承的接口
- asp.net-mvc – 如何在MVC 5中使用用户身份中的角
- asp.net-mvc – 使用EF Code First和ASP.NET MVC
- asp.net – RenderBody和RenderSection之间的区别
- .net – 洋葱建筑中的依赖性解析
- asp.net-mvc-3 – asp.net mvc,jquery mobile,ph
- asp.net-mvc – 为什么ASP.NET MVC Html.CheckBo
- 如何从ASP.NET MVC网站中生成可下载的c#类?