0

私は次のオブジェクトを持っています:

人<-連絡先->クライアント人<-クライアント

サービスレイヤーでリポジトリパターンを使用しています。しかし、すでにここにいて、完璧主義者である私は迷子になっています!

私はPersonService、ClientServiceも持っており、personService.Add(person)とclientsPersonService.Add(client)を呼び出す必要があるContactServiceが必要だと確信しています-または?

仕事は連絡先を追加することです。連絡先には、Personオブジェクトが関連付けられ、ClientsPersonオブジェクトが含まれます。そして、そのClientsPersonはしばしばそうするでしょう。クライアントがいます。

さまざまな仕事はどこに行くべきですか?サービス/リポジトリを別の場所に呼び出すのは悪いことだと聞きました。

4

1 に答える 1

0

この答えは、ORMとそれがどのように保存をカスケードするかによって異なります。変更をカスケードするORMを使用していないと想定します。

サービス層のメソッドは、ビジネスの意味から実行する必要のあるアクションを反映する必要があります。コントローラーのアクションがサービスメソッドと非常によく一致していることがよくあります。

あなたの例では、サービスを構築して必要なエンティティに関連付け、リポジトリに話しかけてそれらを保存します。そうすれば、リポジトリとの通信中に問題が発生した場合、リポジトリはロールバックして、必要なクリーンアップを実行できます。

リポジトリは比較的ダムである必要があります。サービスは関係とビジネスの仕事をする必要があります(NHibのようなものを除いて、そして多分それでも)。

于 2009-10-13T19:23:29.010 に答える