DAL:存储库边界问题
Posted
技术标签:
【中文标题】DAL:存储库边界问题【英文标题】:DAL: repository boundaries question 【发布时间】: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
)(一个方法将调用委托给另一个实现它的方法)?或者我们是否应该在团队中有强大的存储库方法命名约定?或者我可能会改变存储库边界的方法?
【问题讨论】:
【参考方案1】:在面向对象的世界中,我会拥有一个带有 AssignPhoto 方法的 Person 对象。
至少对我来说,在存储库上处理对象关系操作感觉像是一种程序方法。
【讨论】:
以上是关于DAL:存储库边界问题的主要内容,如果未能解决你的问题,请参考以下文章