在 WPF MVVM EF 应用程序中将 Automapper 放在哪里

Where to put Automapper in WPF MVVM EF application

使用 MVVM 设计的 WPF 应用程序 我使用 EF 作为我的 ORM,通过服务层暴露到我的前端。

阅读我读过的所有内容都说我应该在服务层中实现自动映射器,但我不明白这在这里有什么意义。 ViewModel 是我肯定希望与数据实体不同的那个,所以我应该在 ViewModel 中进行映射?

或者我应该做两次(似乎有点矫枉过正)即将 EF 实体映射到 DTO,以便服务传递到前端,然后前端将它们转换为 ViewModel 对象。

首先,我不会在 MVVM 客户端应用程序中使用 DTO 或 Automapper。只需使用 EF 类型作为模型类型,并构建将模型类型组合在一起的 ViewModels。

但我根本不关心 ViewModel 和 Model 之间的耦合。 ViewModel already a later of indirection between View and the Model/Service layer,你几乎总是将所有部分部署在一起。 ViewModel 直接包含模型类型通常是可以接受的。

但是如果您确实想将 Automapper 放在某个地方,它属于 EF 类型和模型类型之间,就像您的服务层是 REST 服务并且您想使用 DTO 而不是 EF 实体类型一样.在这种情况下,您可能希望在不重新部署应用程序的情况下更改 REST 服务,因此 DTO 允许您在不更改客户端接收的数据的情况下进行 database/EF 更改。