私のリポジトリ/サービスは、どのくらいの責任を持つべき?
-
21-09-2019 - |
質問
私は、次のオブジェクトがあります:
人< - 連絡先 - > ClientsPerson < - クライアント
私は、サービス層でリポジトリパターンを使用しています。しかし、すでにここ、完全主義者であること、私は迷ってしまいました!
私はまたPersonService、ClientServiceを持っていると私はかなり確信して、私はpersonService.Add(人)とclientsPersonService.Add(クライアント)を呼び出す必要がありContactService持っている必要がありますね - ?または
仕事は、連絡先を追加することです。連絡先は、関連するPersonオブジェクト、およびClientsPersonオブジェクトを持っているでしょう。そして、それClientsPersonはOFCでしょう。クライアントを持っています。
ここで別のジョブがに行くべき?私はそれが一方から他方へのサービス/リポジトリを呼び出すために悪いと聞きました。
解決
この答えはあなたのORMとそれがどのようにカスケード節約に依存します。私たちは、あなたがカスケードの変更というORMを使用していないと仮定します。
あなたのサービス層のメソッドを使用すると、ビジネス感覚から達成するために必要なアクションを反映すべきです。よく私は私のコントローラのアクションは、サービスメソッドに非常に密接に一致することを見つけます。
あなたの例では、私はサービスのビルドを持っているでしょうし、それらを保存するためにレポに必要なエンティティとの話に関連して、それが戻って自分自身をロールし、必要なものは何でもクリーンアップ出来るのレポに話の途中で問題がある場合はそのようにます。
レポは比較的ダムでなければなりません。サービス(NHibのようなものがなければ、多分当時)の関係やビジネスの作業を行う必要があります。