使用存儲庫模式處理視圖(不代表實體但用於綁定DropDown列表的類)的最佳方式是什麼?比如我有一個以下客戶實體使用存儲庫模式處理視圖
public class Customer {
Guid ID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
List<Address> Addresses {get;set;}
}
和庫
public class CustomerRepository : IRepository<Customer> {
Customer GetByID(Guid id) { ... }
List<Customer> GetAll() { ... }
// Insert/Delete/Update Customer etc.
}
現在我要填寫客戶與他們的基地地址一起列表的下拉列表中,使用他們的ID作爲一個值屬性。我有一個存儲過程返回這個數據,我可以檢索其結果爲以下對象的列表:
public class CustomerWithBaseAddress {
public Guid CustomerID {get;set;}
public string FullNameWithBaseAddress { get;set; }
}
如若客戶資料庫回報這樣的對象,還是應該由不同的,專門的倉庫(但沒有保存/管理刪除操作)?
你是什麼意思「它應該使用存儲庫在你的控制器中構建」? - 如果我理解正確,那麼在這種情況下,如果我使用存儲庫檢索客戶,然後將這些結果映射到CustomerWithBaseAddress,那麼這不會浪費大量資源嗎? (客戶聚合事實上比我在我的示例中寫的要複雜得多,因此我會在CustomerWithBaseAddress視圖模型中檢索很多不需要的Customer數據。 – 2011-05-03 15:19:17
我誤讀了。我雖然'CustomerWithBaseAddress'繼承了'Customer'。道歉。由於'CustomerWithBaseAddress'是由某種數據庫查詢創建的,因此我會將其放入存儲庫中。 – jgauffin 2011-05-03 17:30:32