4

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

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

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

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

4

1 回答 1

0

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

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

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

于 2014-03-18T11:23:17.643 回答