让我再试一次...
视图模型的 MVC 3 存储库模式自动映射器
我把我的应用程序放到我的服务器上,当加载仪表板(这反过来加载 5 个 Kendo UI 图表)时,它使服务器陷入困境,处理器达到 100% 的峰值。IT 需要 5-10 秒来加载页面。
我正在尝试使用 EF Profiler 进行优化。我注意到进行了各种查询,当您看到我的仪表板控制器时,这是有道理的。但是 AutoMapper 似乎需要很长时间才能将 1800 多条记录转换为视图模型。我可以缓存我的 repo 以在控制器或其他东西上使用吗?
Public Class DashboardController
Inherits BaseController
Private ticketRepo As MaintenanceTicketsRepository
Public Sub New()
Me.ticketRepo = New MaintenanceTicketsRepository(New TicketContext)
End Sub
Function Chart_OpenItemsByPM() As ActionResult
Dim tickets = ticketRepo.GetAll().Include(Function(p) p.Priority).Include(Function(s) s.Status).OrderBy(Function(o) o.PriorityId).ToArray()
Mapper.CreateMap(Of MaintenanceTicket, PieChartViewModel)()
Dim queue As PieChartViewModel() = Mapper.Map(Of MaintenanceTicket(), PieChartViewModel())(tickets)
Dim ticketCounts = From t In queue _
Where t.StatusName = "Open" And _
t.PriorityName <> "Not Ready" _
Group t By t.PriorityName Into Count() _
Select PriorityName, Id = Count
Return Json(ticketCounts)
End Function
更新: 如果有人读过这个,我也想知道填充“票”对象。当它们通过 ajax 调用时,我将其填充到我的每个函数中。这意味着我要为同一组初始数据发送多个查询,这些初始数据后来在函数中进行了精简。
是否存在一次填充存储库然后重用它的模式?