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

时间:2018-01-03 17:09:48

标签: mvvm automapper separation-of-concerns dependency-inversion

关于将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!

这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

首先,只要认识到embeddedElastic = EmbeddedElastic.builder() .withElasticVersion(Version.CURRENT.number()) .withSetting(PopularProperties.CLUSTER_NAME, CLUSTER_NAME) .withSetting(PopularProperties.TRANSPORT_TCP_PORT, transportTcpPort) .withIndex(INDEX_NAME, IndexSettings.builder() .withSettings(getClass().getResourceAsStream("settings-mappings.json")) .build()) .build() .start(); 是一个漏洞的抽象。为了在您使用的任何ORM中有效地使用它,您需要使用特定于ORM的扩展。

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

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