存储库模式 - 聚合根

时间:2011-06-30 17:16:52

标签: .net entity-framework orm repository-pattern aggregateroot

我试图了解聚合根源于我的实体框架数据模型的位置,因此我知道需要创建哪些存储库。

如果我在关系数据库术语中讲一秒钟,我有一个ExceptionGroup对象和一个Exception对象(不是system.exception!)。 Exception属于ExceptionGroup,如果没有ExceptionGroup,则不能存在。

我是否应该为每个对象或包含两者的方法的单个存储库创建存储库?如果我有一个存储库,方法将如下...

FindAllExceptionsByExceptionGroup(int GroupID)
AddExceptionGroup(ExceptionGroup ExceptionGroup) - because an exception cannot exist without a group.
AddException(DataAccess.Exception Exception)
DeleteExceptionGroupByID(int GroupID)
DeleteExceptionByID(int ExceptionID)
DeleteExceptionByGroup(int GroupID)

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的模型,听起来您将拥有ExceptionGroup的存储库,而ExceptionGroup对象将封装Exception个实例上的访问和操作(例如,通过揭露他们的集合)。通过这种方式,两个阶级之间的强制关系变得非常明显。

Jeff Sternal对这里的类似问题有一个很好的答案:What's an Aggregate Root?他的Order / LineItem示例似乎是类似的。