减少存储库以汇总根
目前,我几乎为数据库中的每个表都拥有一个存储库,并希望通过减少DDD使其仅聚合根来进一步使自己与DDD保持一致。 假设我有下表User和Phone。每个用户可能有一个或多个电话。没有聚合根的概念,我可能会做这样的事情: //assuming I have the userId in session for example and I want to update a phone number List<Phone> phones = PhoneRepository.GetPhoneNumberByUserId(userId); phones[0].Number = “911”; PhoneRepository.Update(phones[0]); 集合根的概念比实际更容易在纸上理解。我将永远不会拥有不属于用户的电话号码,因此取消PhoneRepository并将电话相关的方法合并到UserRepository中是否有意义?假设答案是肯定的,我将重写先前的代码示例。 我可以在UserRepository上使用返回电话号码的方法吗?还是应该始终返回对用户的引用,然后遍历用户之间的关系以获取电话号码: List<Phone> phones = UserRepository.GetPhoneNumbers(userId); // Or User user = UserRepository.GetUserWithPhoneNumbers(userId); //this method will join to Phone 无论我以哪种方式获得电话,假设我修改了其中一部电话,如何进行更新?我有限的理解是,应该通过根目录更新根目录下的对象,这将使我朝下面的选择#1前进。尽管这可以很好地与Entity Framework一起很好地工作,但这似乎没有什么描述性,因为即使Entity Framework在图形中更改对象的选项卡上,阅读代码我也不知道我实际更新的内容。 UserRepository.Update(user); // …