繁体   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