簡體   English   中英

如何組成視圖模型並同時最小化數據庫交互

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM