2013-02-21 50 views
3

我開始懷疑我的初始設計決策,因爲我到處都是這樣,我在MVC上找到關於將訪問層轉儲到MVC項目中的教程。 (這對一切順利我已經學會)具有多個存儲庫的良好MVC設計

UML Diagram of my design

  • BarRepo:處理訪問的API。
  • FooRepo:處理訪問我的數據庫(使用EF)。
  • FooBarHandler:將來自兩個倉庫的數據連接到控制器的有用數據。
  • 控制器:一個控制器,沒什麼特別的。

正如您在圖片中看到的,我將每個零件分成了自己的項目並試圖獲得鬆散耦合。所以我不會將實體框架類從數據庫層中發送出去等等。然而,我遇到了一個泡菜。獲取的數據量變得非常大,以至於在前端顯着,所以我需要引入分頁。所以我跟着this tutorial。 我的「問題」是,現在MVC,邏輯和數據庫項目都依賴於PagedList,所以事情不再那麼整齊有光澤了。

所以我的問題是你會做什麼?

+1

大部分情況下,這聽起來像是你做對了。我的建議是使用存儲過程來幫助加速數據庫交互。他們與EF一起工作的樂趣不大,但他們在處理大量數據方面做得更好,並將所述數據修剪至最小數量。 – IyaTaisho 2013-02-21 19:51:09

回答

2

您不需要使用PagedList,因爲您可以自己創建分頁的項目列表。查看this StackOverflow question,瞭解如何執行此操作的示例。

總結:

var pageNum = 3; 
var pageSize = 20; 

var pagedItems = data.Skip((pageNum - 1) * pageSize).Take(pageSize).ToList(); 

這樣,你將有PagedList沒有依賴關係,這將有助於降低設計中的耦合。

+0

這似乎是一個合法的解決方案:) – 2013-02-21 20:26:11