個別のレイヤーに分割されたPOCOクラスを使用しているMVC3アプリがあります。一般的なリポジトリパターンも実装しました。
管理用の剣道UIチャートを使用してリアルタイムの統計を表示するダッシュボードがあります。データベースが大きくなるにつれて、ダッシュボードはどんどん遅くなります。私はこれらの理由を見つけました:
- レコードは毎日増えます
- 各グラフはリポジトリを呼び出して、LINQで統計を計算するためのすべての行を取得します
- 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