我对整个.NET场景都很陌生,而且我还在努力解决这个问题。
似乎非常提倡的一件事是域驱动设计模式。我渴望在.NET世界中获得一个良好的开端,并且正确地将其应用到我的项目中。
据我所知,让域对象访问存储库等持久层函数是不好的做法,但是在使用高度连接的图时,我真的很难解决如何解决急切加载的问题。它通常最终在域模型中几乎没有逻辑并将其全部移动到服务层,该服务层执行计算并使用数据填充模型对象或直接返回结果,例如price = productService.CalculatePriceFor(product, user);
而不是{{ 1}}因为在第一次请求对象时没有急切加载整个产品组树和折扣矩阵就无法完成后者。
这里有什么好习惯?实现产品的子类,其中获取用户价格的信息是在加载时计算的,当我不需要用户价格时,还有另一个子类?
答案 0 :(得分:0)
在正确的DDD中,您没有任何连接严重的图表。 Vaughn Vernon关于聚合设计的文章应该可以帮助你理解这个想法。
http://dddcommunity.org/library/vernon_2011/
还要考虑产品和用户是否属于同一个有界上下文。我会说他们没有。在不同的上下文中,可能会以不同的方式实现类似的想法,例如,在定价上下文中,Client类可能是一个简单的聚合,提供一些回扣但没有关于发货,发票等的信息。但是,运输上下文会有类似的用户类只是Shipping聚合中的值对象(带有地址)。用户类似乎是身份验证上下文的一部分。