2012-03-09 11 views
1

できるだけ多くのビジネスロジックを私のドメインモデルに入れようとしています。DDDとCRUDに関する振る舞いを格納するリポジトリのパターン

MyEntityが更新されるたびに、私が起こるには、2つの事柄たい:

  1. を変更は、特定のビジネス・ルール

には適用された場合

  • チェックを、それを作成したユーザーにメッセージを送りますエンティティが集合ルートの子でない場合

    通常、リポジトリから特定のエンティティを取得します。エンティティを変更し、この場合、MyRepository.Save()

    を使用してDBに戻し
    それを持続し、私はいないドメインモデルでは、自分のアプリケーションやDALのビジネスロジックを置く必要があるだろう。私は絶対に必要な場合を除いて、ビジネスロジック層の使用を避けようとしていますが、MyEntity.Update()などのメソッドを作成しない限り、これを適合させることはできませんが、それを行う方法。

  • +0

    リポジトリ上の注意尾と述べた

    public enum UpdateResult { Success, NoMyEntityFound, StaleData, InvalidRequest } public class MyService { ... ... public UpdateResult Update(...) { ...Start Tran ...Load var m = MyEntity ...do the bare minimum here ...m.Update() ...Commit Tran return UpdateResult.Success; } } 

    は、アプリケーション固有のドメインにbelogこれらのアクション、あなたが確かにありますか? – AngeloBad

    +0

    まあ、この特定のロジックである必要はないという意味で一般的な質問ですが、集約ルートではないエンティティを変更したときに適用される任意のロジックまたはルールです。 – cfs

    答えて

    1

    まず、私はリポジトリのパターンに対してではないと述べておきます。私は最近、プロジェクトに成功しました。

    私は慎重を要すると言います...オブジェクトの要件をカプセル化できない場合は、オブジェクト指向のアプローチをもう一度見直す必要があります。他の作業を行う目的でデータアクセスレイヤーを導入することは、コードの臭いのようです。私はサービス層を使用してリクエストを受信し、トランザクションやバージョン管理を管理しましたが、検証などの追加作業は行いませんでした。潜在的にあなたのサービス階層は次のようになります。すべて

    http://ayende.com/blog/3955/repository-is-the-new-singleton

    +0

    この例のおかげでよかったです。これをドメインサービスとして実装しますか? – cfs

    関連する問題