关于将 AutoMapper.EF6 用于投影的 MVVM 项目,我很难将数据访问层和视图模型层的关注点分开,并在这些层之间保持依赖关系反转。
假设我们有这些层和类。
Models Layer:
Entity
IEntityDA
ViewModel Layer:
EntityVM
EntityFormVM<TEntityVM, TEntity>
DataAccess Layer:
EntityDA: (Inherits from IEntityDA<TEntity>)
现在,在 中EntityFormVM
,我IQueryable<TEntity>
从一个IEntityDA
实例中获取一个,并将其投影到一个列表中TEntityVM
,最后调用IEntityDA.Dispose()
. 这样,DA就暴露了一个IQueryable
!不知道对不对!VM 负责处理上下文,因为 DA 不知道工作何时完成!
另一方面,我有一些替代方案,例如反转 DA 和 VM 之间的依赖关系。因此,我将把EntityDA<TEntityVM, TEntity>
结果投射到哪些项目中TEntityVM
并返回它们。但是,DA 将取决于 VM!
这里的最佳做法是什么?