我的存储库/服务应该承担多少责任?

时间:2009-10-13 18:56:01

标签: asp.net-mvc repository-pattern service-layer

我有以下对象:

人< - 联系 - > ClientsPerson< - Client

我正在使用带有服务层的存储库模式。但是在这里,作为一个完美主义者,我迷失了!

我还有一个PersonService,ClientService,我很确定我需要一个应该调用personService.Add(person)和clientsPersonService.Add(client)的ContactService - 或者?

工作是添加联系人。该联系人将具有相关的Person对象和ClientsPerson对象。那个ClientsPerson会的。有一个客户。

不同的工作应该去哪里?我听说将服务/存储库从一个调用到另一个是不好的。

1 个答案:

答案 0 :(得分:0)

这个答案取决于你的ORM以及它如何保存。我们假设您没有使用级联更改的ORM。

您的服务层方法应该反映您需要从商业意义上完成的操作。经常我发现我的控制器操作与服务方法非常接近。

在你的例子中,我将建立服务并与必要的实体相关联并与repos交谈以保存它们;这样,如果在与回购交谈的过程中出现问题,它可以回滚并做任何必要的清理工作。

回购应该相对愚蠢。服务应该做关系和业务工作(除非像NHib,甚至可能那样)。