【发布时间】:2011-03-21 12:48:39
【问题描述】:
有一个 DAL 库公开了十几个存储库。每个实体一个存储库。有PersonRepository 和PhotoRepository。
当我向存储库添加一个新方法并且方法处理实体时,很明显我必须把它放在哪里。如果我想要 CreatePerson 我会创建 PersonRepository::Create(...) 或者当我需要更新照片时我会创建 PhotoRepository::Update
但是当方法处理实体关系时,有时事情会变得一团糟。例如,我应该创建PersonRepository::AssignPhoto(PersonId, PhotoId) 还是应该创建PhotoRepository::AssingToPerson(PhotoId, PersonId)?
如果我很清楚(我认为 Person 是比 Photo 更重要的实体,所以我将创建 PersonRepository 方法),一些开发人员找不到合适的方法并倾向于在 PhotoRepository 中创建重复项。
您如何最大限度地减少此问题?
您可能同时创建了两种方法(PersonRepository::AssignPhoto 和PhotoRepository::AssignToPerson)(一个方法将调用委托给另一个实现它的方法)?或者我们是否应该在团队中有强大的存储库方法命名约定?或者我可能会改变存储库边界的方法?
【问题讨论】:
标签: .net language-agnostic data-access-layer