0

我有一个 MVC3 应用程序,它使用分离成不同层的 POCO 类。我也实现了一个通用的回购模式。

我有一个仪表板,它使用 Kendo UI 图表进行管理以查看实时统计信息。随着数据库的增长,仪表板越来越慢。我找到了这些原因:

  1. 记录每天都在增长
  2. 每个图表调用 repo 以获取所有行以使用 LINQ 计算统计信息
  3. Automapper 正在将我的模型创建为视图模型

我想通过使用数据库中的存储过程来准确获取统计数据所需的数字来加快这一速度。我不确定我应该如何实现这个......即使感觉很不对劲!有小费吗?

带有回购代码的示例控制器

Public Class DashboardController
    Inherits BaseController

    Private ticketRepo As MaintenanceTicketsRepository

    Public Sub New()
        Me.ticketRepo = New MaintenanceTicketsRepository(New TicketContext)
    End Sub

    Function Chart_OpenItems() As ActionResult
        Dim tickets As IList(Of MaintenanceTicket) = ticketRepo.GetAll().Include(Function(p) p.Priority).Include(Function(s) s.Status).OrderBy(Function(o) o.PriorityId).ToArray()
         'Do some work with repo then dispose'
    End Function

    Function Chart_ClosedItems() As ActionResult
        Dim tickets As IList(Of MaintenanceTicket) = ticketRepo.GetAll().Include(Function(p) p.Priority).Include(Function(s) s.Status).OrderBy(Function(o) o.PriorityId).ToArray()
         'Do some work with repo then dispose'
    End Function
End Class
4

1 回答 1

1

试图回答你的问题。如果您可以通过使用存储过程在数据离开 SQL Server 之前聚合数据来减少进入模型的数据量,那么就去做吧。实际的实现细节将取决于您拥有什么样的 ORM 设置。如果您可以将 1800 行减少到 >100,您几乎肯定会看到速度提高。

于 2012-12-17T17:29:32.937 回答