gpt4 book ai didi

c# - RavenDB - 当我想要引用另一个根聚合时

转载 作者:行者123 更新时间:2023-11-30 16:27:50 25 4
gpt4 key购买 nike

我知道使用 DDD 有一段时间了,所以我对聚合的概念很满意。起初,我确实无法解决不使用/持久引用其他根聚合的问题,但我想我同意了……所以:

  • 将根聚合存储为一个文档....检查
  • 使用包含不改变或很少改变的属性的非规范化引用....检查

当我确实想要拥有对另一个根聚合的完整引用时,我理解建议我保留对其 ID 的引用并且可以使用 RavenDB 客户端 API 的Includes 来检索所有实体都有效。

它处理数据部分,我还没有看到在我的实体类中处理它的最佳方法:

  1. 在我的类中同时拥有 ProductProductId 属性,在 Product 上使用 [JsonIgnore] 以确保它不会与文档保持一致。
    • 然后可以在存储库中将完整的对象图粘合在一起(使用 API 的 Includes 以提高效率)或者我可以将服务注入(inject)到将获取 Product 的实体中懒惰地(可能 N+1 命中)
  2. 在 ViewModel 中将其粘在一起。我不喜欢这个想法,因为如果使用不当,我可能会在域中得到意外的 NULL 引用。
  3. 其他一些我没有看到的明显方式?

想法?

最佳答案

在 DDD 中至少有两个有效的观点。一些 ppl 仅通过 ID 或另一个有效 key 链接根聚合,其次是使用对其他对象的平台特定引用。两者各有优缺点。

对于像 RavenDb 这样的 NoSql 解决方案,使用第一种方法可能更好,因为第二种方法在技术上是错误的。

关于c# - RavenDB - 当我想要引用另一个根聚合时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517887/

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