.net - DAL : repository boundaries question

标签 .net language-agnostic data-access-layer

有一个 DAL 库公开了十几个存储库。每个实体一个存储库。有 PersonRepositoryPhotoRepository

当我向存储库添加新方法并且方法处理实体时,很明显我必须将它放在哪里。如果我想要 CreatePerson,我将创建 PersonRepository::Create(...) 或者当我需要更新照片时,我将创建 PhotoRepository::Update

但是当方法处理实体关系时,事情有时会变得空洞。例如,我应该创建 PersonRepository::AssignPhoto(PersonId, PhotoId) 还是创建 PhotoRepository::AssingToPerson(PhotoId, PersonId)?

如果事情对我来说很清楚(我认为 Person 是比 Photo 更重要的实体,所以我将创建 PersonRepository 方法),一些开发人员找不到合适的方法并倾向于在 PhotoRepository 中创建副本。

您如何最大程度地减少此问题?

您是否可以同时创建这两种方法(PersonRepository::AssignPhotoPhotoRepository::AssignToPerson)(一个方法委托(delegate)调用另一个方法来实现)?或者我们是否应该在团队中拥有强大的存储库方法命名约定?或者我可能会改变存储库边界的方法?

最佳答案

在面向对象的世界中,我有一个带有 AssignPhoto 方法的 Person 对象。

处理对存储库的对象关系操作感觉像是一种过程方法,至少对我而言。

关于.net - DAL : repository boundaries question,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342610/

相关文章:

c# - .Net MVC4 重定向到操作未按预期工作

security - 变量隐私实际上与安全性有什么关系,还是只是为了编程方便?

security - 通过使用更长的密文获得额外的安全性

c# - 为 .NET 数据访问层使用 MySql 存储过程

repository-pattern - 关于存储库模式的一些事情我根本不明白

.net - 使 WPF 应用程序看起来像 Metro 风格,即使在 Windows 7 中也是如此? (窗口 Chrome/主题/主题)

c# - TimeSpan.ParseExact 返回 System.FormatException

c# - 在 WPF 中仅使用 XAML 根据 TextBox 的文本过滤 ListBox 的项目

design-patterns - 最佳实践错误处理

database - 您将如何避免此数据库模式中的数据冲突?