关注点分离,依赖性反转和AutoMapper预测

问题描述 投票:0回答:1

关于应用AutoMapper.EF6进行投影的MVVM项目,我很难分离数据访问和视图模型层的关注点,并在这些层之间保持依赖关系倒置。

假设我们有这些图层和类。

Models Layer: 
    Entity
    IEntityDA

ViewModel Layer:
    EntityVM
    EntityFormVM<TEntityVM, TEntity>

DataAccess Layer: 
    EntityDA: (Inherits from IEntityDA<TEntity>)

现在,在EntityFormVM中,我从IEntityDA实例获取IQueriable,并将其投影到TEntityVM列表中,最后调用IEntityDA.Dispose()。通过这种方式,DA暴露了IQueriable!我不知道它是否正确!由于DA不知道工作何时完成,因此VM可以处理上下文!

另一方面,我有一些替代方案,比如反转DA和VM之间的依赖关系。因此,我将使用EntityDA将结果投影到TEntityVM并返回它们。但是,DA将取决于VM!

这里的最佳做法是什么?

mvvm automapper separation-of-concerns dependency-inversion
1个回答
1
投票

首先,只要认识到IQueryable是一个漏洞的抽象。为了有效地将其与您使用的任何ORM一起使用,您需要使用特定于ORM的扩展。

我的建议 - 不要担心这里的图层,你会想要在所有这些图层中垂直耦合一个请求。

问题已经通过这些模型对象分开。剩下的就是矫枉过正。

© www.soinside.com 2019 - 2024. All rights reserved.