在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 - >实体 - >中间体模型 - >视图模型
该附加的 “映射” 需要更多的代码==更多的复杂性。我不知道现在如何解决这个问题。
到目前为止,我已经解决了一些创建额外的“辅助”存储库方法的情况,但是我意识到它很快就会变得有点混乱。
任何想法?