[英]how to compose view models and minimize database interaction at the same time
在帶有Entity Framework的Asp.Net MVC中,我完全同意DAL(數據訪問層)中的存儲庫(位於單獨的程序集中)不得處理視圖模型。
從DAL中,我得到實體,主要是IQueryAbles。 從這些我組成了相當復雜的視圖模型。 挑戰在於,我想最大程度地減少為了組成視圖模型而生成的sql選擇的數量。 在某些情況下,我需要查詢數據庫10-20次。
例如,這是我的視圖模型
class ViewModel{
//.. public properties mapped from entities 1 sql select
public int CountOfSomething {get; set;} 1 sql select
public int CountOfSomethingElse {get;set;} 1 sql select
//..and so on
}
因此,從性能角度來看,這不是最佳選擇。 我可以修改存儲庫以返回更復雜的結果,但隨后它們將不返回實體,而是返回其他東西。
在這種情況下:DAL組成並返回在DAL程序集中定義的中間模型(實體和其他數據),然后將該中間模型(而不是實體)轉換為視圖模型。
DB->實體-> 中間模型 -> ViewModel
這種額外的“映射”需要更多的代碼==更高的復雜性。 我不確定現在如何解決這個問題。
到目前為止,我已經通過創建其他“幫助程序”存儲庫方法解決了一些情況,但我意識到它很快變得一團糟。
有任何想法嗎?
制作一些類,僅將其從實體/中間模型映射到視圖模型即可。
為此,有一些庫,我建議您使用automapper ,它甚至還具有一些測試功能,因此您可以正確地進行映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.