在Asp.Net MVC with Entity Framework中,我完全同意位於單獨程序集中的DAL(數據訪問層)中的存儲庫一定不能處理與視圖模型。如何組合視圖模型並同時最小化數據庫交互
從DAL我得到的實體,主要是IQueryAbles。從那些我構成相當複雜的視圖模型。 面臨的挑戰是,我想最大限度地減少爲編寫視圖模型而生成的sql選擇的數量。在某些情況下,我需要查詢db 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 - >實體 - >中間體模型 - >視圖模型
該附加的 「映射」 需要更多的代碼==更多的複雜性。我不知道現在如何解決這個問題。
到目前爲止,我已經解決了一些創建額外的「輔助」存儲庫方法的情況,但是我意識到它很快就會變得有點混亂。
任何想法?