有一个 DAL 库公开了十几个存储库。每个实体一个存储库。有 PersonRepository
和 PhotoRepository
。
当我向存储库添加新方法并且方法处理实体时,很明显我必须将它放在哪里。如果我想要 CreatePerson,我将创建 PersonRepository::Create(...)
或者当我需要更新照片时,我将创建 PhotoRepository::Update
但是当方法处理实体关系时,事情有时会变得空洞。例如,我应该创建 PersonRepository::AssignPhoto(PersonId, PhotoId)
还是创建 PhotoRepository::AssingToPerson(PhotoId, PersonId
)?
如果事情对我来说很清楚(我认为 Person 是比 Photo 更重要的实体,所以我将创建 PersonRepository 方法),一些开发人员找不到合适的方法并倾向于在 PhotoRepository 中创建副本。
您如何最大程度地减少此问题?
您是否可以同时创建这两种方法(PersonRepository::AssignPhoto
和PhotoRepository::AssignToPerson
)(一个方法委托(delegate)调用另一个方法来实现)?或者我们是否应该在团队中拥有强大的存储库方法命名约定?或者我可能会改变存储库边界的方法?
最佳答案
在面向对象的世界中,我有一个带有 AssignPhoto 方法的 Person 对象。
处理对存储库的对象关系操作感觉像是一种过程方法,至少对我而言。
关于.net - DAL : repository boundaries question,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342610/