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,它甚至有一些测试功能,所以你可以正确地做你的映射。

相关问题