【问题标题】:DDD - Entity DTO representation on RepositoriesDDD - 存储库上的实体 DTO 表示
【发布时间】:2017-07-21 12:13:40
【问题描述】:

有些属性对域没有意义,但对存储库至关重要,例如分区键。

可以在我的存储库中有一个 DTO 来扩展实体的基本实现并添加相关字段吗?

【问题讨论】:

  • 你有这个问题是因为你没有将写和读模型分开;在CQRS你不会有这种问题。

标签: domain-driven-design dto ddd-repositories


【解决方案1】:

这完全没问题。只要此 DTO 保留在存储库中。 在福勒的 PoEAA 中:

存储库模式被描述为:域之间的中介 和数据映射层使用类似集合的接口 访问域对象。

只要存储库正常工作(存储和获取域模型),实现就无关紧要。 只要确保存储库的任何实现细节都不会在项目的其余部分中传播。如果您将 DTO 添加到存储库内的实体,请确保您返回的实体不包含 DTO 或其他不相关的额外字段。

【讨论】:

  • 小心:引用文本中描述的“存储库”与 Evans 在领域驱动设计第六章中描述的“存储库”不一致。 Evans 在应用程序和域之间使用存储库,而不是在域和持久存储之间。
  • 我认为 Evans 正在谈论相同的存储库模式。你能解释一下“在应用程序和域之间”是什么意思吗?
猜你喜欢
  • 2013-12-05
  • 2010-11-24
  • 2018-08-03
  • 1970-01-01
  • 2012-03-10
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多