有一个DAL库,其中包含数十个存储库。每个实体都有一个存储库。有
当我向存储库添加新方法并且该方法涉及实体时,我很清楚应该将其放在哪里。如果我想创建CreatePerson,我会创建
但是,当方法涉及实体关系时,事情有时会变得模糊。例如,我应该创建
如果对我来说事情很清楚(我认为人比照片更重要,所以我会创建PersonRepository方法),则一些开发人员可能找不到适当的方法,并倾向于在PhotoRepository中创建副本。
如何最小化此问题?
也许您可以同时创建两种方法(
PersonRepository
和PhotoRepository
。当我向存储库添加新方法并且该方法涉及实体时,我很清楚应该将其放在哪里。如果我想创建CreatePerson,我会创建
PersonRepository::Create(...)
,或者当我需要更新照片时,我会创建PhotoRepository::Update
。但是,当方法涉及实体关系时,事情有时会变得模糊。例如,我应该创建
PersonRepository::AssignPhoto(PersonId, PhotoId)
还是应该创建PhotoRepository::AssingToPerson(PhotoId, PersonId)
?如果对我来说事情很清楚(我认为人比照片更重要,所以我会创建PersonRepository方法),则一些开发人员可能找不到适当的方法,并倾向于在PhotoRepository中创建副本。
如何最小化此问题?
也许您可以同时创建两种方法(
PersonRepository::AssignPhoto
和PhotoRepository::AssignToPerson
)(其中一种方法将调用委托给另一种实现方法)?或者我们团队应该有强大的存储库方法命名约定?或者我应该改变对存储库边界的处理方式?