0

我有以下对象:

人员 <- 联系人 -> 客户人员 <- 客户

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

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

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

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

4

1 回答 1

0

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

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

在您的示例中,我将构建服务并与必要的实体相关联,并与存储库交谈以保存它们;这样,如果在与 repos 交谈的过程中出现问题,它可以自行回滚并进行任何必要的清理。

回购应该是相对愚蠢的。服务应该负责关系和业务工作(除非像 NHib 这样的东西,甚至可能如此)。

于 2009-10-13T19:23:29.010 回答