gpt4 book ai didi

c# - 我应该在哪里将我的实体转换为 DTO?

转载 作者:行者123 更新时间:2023-11-30 21:06:03 25 4
gpt4 key购买 nike

我的架构是这样的:

  • 域名
    • 实体
    • 接口(interface)
    • DTO
  • 基础设施
    • ORM
    • 存储库
  • 服务
    • 网络服务

我想使用 AutoMapper 来转换它。我希望我的服务层只知道 DTO,所以我猜我会让我的接口(interface)和我的存储库返回转换后的 DTO。至于另一个方向,我会假设我的存储库将采用 DTO 并转换为实体?我是在正确的道路上还是在左场?

最佳答案

  1. 您的存储库应该只处理围绕行为和事务设计的域聚合。

  2. 在处理命令时,您的应用层(Web 服务)应该调用域模型上的逻辑,将聚合保存回存储库。

  3. 当客户端需要来自网络服务的数据时,您有两种选择:

    • 从存储库中获取聚合并将它们映射到 POCO DTO(可能使用 AutoMapper)。
    • 创建一个薄数据访问层,专门用于直接向 DTO 查询数据。

我更喜欢后一种方法。正如我所说,域聚合应该按行为和交易来设计。它们并非设计用于在屏幕上显示数据。尝试将数据从正确设计的域实体(即正确封装)映射到数据使用者(例如 UI)的 DTO 始终是一个尴尬的过程。它是圆孔中的方钉。在我看来,提供一个返回客户端需要的任何数据的薄数据访问层要容易得多。领域模型不需要参与这个过程;这只是数据。这就是CQRS的基本原理.

无论如何,应该是应用层(网络服务)将域实体转换为 DTO。

关于c# - 我应该在哪里将我的实体转换为 DTO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11401447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com