1

在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 - >實體 - >中間體模型 - >視圖模型

該附加的 「映射」 需要更多的代碼==更多的複雜性。我不知道現在如何解決這個問題。

到目前爲止,我已經解決了一些創建額外的「輔助」存儲庫方法的情況,但是我意識到它很快就會變得有點混亂。

任何想法?

回答

0

做一些類,哪些工作只是從實體/中間模型映射到視圖模型。

爲此目的有一些庫,我建議你automapper,它甚至有一些測試功能,所以你可以正確地做你的映射。

相關問題