假设我有两个简单的实体:用户和评论。如果用户调用 Review 存储库有多糟糕?用户获得评论的“干净”方式是什么?
class User
{
public function getReviews()
{
return reviewRepository.findByUser(this);
}
}
我确实看过这个问题,但尽管他们说这是一种不好的做法,但我没有在那里找到答案。
假设我有两个简单的实体:用户和评论。如果用户调用 Review 存储库有多糟糕?用户获得评论的“干净”方式是什么?
class User
{
public function getReviews()
{
return reviewRepository.findByUser(this);
}
}
我确实看过这个问题,但尽管他们说这是一种不好的做法,但我没有在那里找到答案。
DDD 中干净的方法是让 UserRepository 在请求用户时填写用户的评论。
class UserRepository
{
public User GetUserByID(long userId)
{
var user = CreateUser();
user.Reviews = FindReviewsforUser(userID);
return user;
}
}
但在执行此操作之前,您需要验证域中的用户实体也是 AggregateRoot!只有 AggregateRoots 有存储库。在设计聚合根时,请查看此问题以查看或获得对问题的一些见解。