【问题标题】:.NET Domain Model, when to eager load.NET 域模型,何时急切加载
【发布时间】:2014-04-22 23:10:10
【问题描述】:

我对整个 .NET 场景还很陌生,我仍在努力解决这个问题。

似乎非常提倡的一件事是领域驱动设计模式。尽管我渴望在 .NET 世界中取得飞跃的开始并正确地做到这一点,但我潜心尝试将其应用到我的项目中。

据我了解,让域对象访问存储库等持久层功能是一种不好的做法,但是当使用高度连接的图时,我真的很难解决急切加载的问题。它通常最终导致域模型中几乎没有逻辑,并将所有逻辑移动到服务层,该服务层进行计算并用数据填充模型对象或直接返回结果,例如 price = productService.CalculatePriceFor(product, user); 而不是 price = product.Price(user) 因为在第一次请求对象时,如果不急切地加载整个产品组树和折扣矩阵,就无法完成后者。

这里有什么好的做法?实现产品的子类,其中获取用户价格的信息是在加载时计算的,并且当我不需要用户价格时有另一个子类?

【问题讨论】:

    标签: c# domain-driven-design anemic-domain-model


    【解决方案1】:

    在正确的 DDD 中,您没有任何高度连接的图。 Vaughn Vernon 关于聚合设计的文章应该可以帮助您理解这个想法。

    http://dddcommunity.org/library/vernon_2011/

    还要考虑产品和用户是否属于同一个有界上下文。我会说他们没有。在不同的上下文中,可能会有类似的想法以不同的方式实现,例如,在定价上下文中,客户端类可能是一个简单的聚合,提供一些回扣,但没有关于运输、发票等的信息。但是,在运输上下文中会有类似的用户类只是 Shipping 聚合中的一个值对象(带有地址)。用户类似乎是身份验证上下文的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多