1

私のドメイン オブジェクトには、「CreateDate」および「ModidfyDate」メンバー (DateTime) があります。

ユーザーがドメイン オブジェクト (Asp.Net MVC) を更新すると、ビュー モデルはこれらの値を保持しません。(リポジトリの「Create」および「Update」メソッドで設定します)

そのため、オブジェクトを更新すると、「CreateDate」が利用できないため、Update メソッドは失敗します。私には2つのオプションがあるようですが、どちらも好きではありません.1)「CreateDate」プロパティ(フォームの隠しフィールド)にビューモデルタグを付けて、元のCreateDateを利用できるようにします。2) または、私の "Update" リポジトリ メソッドで、最初にデータベースから元のレコードを取得し、更新しようとしているオブジェクトを CreateDate メンバーに設定します (db への不要な呼び出し)。

これを扱う「通常の」方法は何ですか?

4

1 に答える 1

1

処理するのに良い方法でCreateDateあり、ModifyDateNHibernateのイベントリスナーを使用することです。

IPreInsertEventListenerおよびを使用して簡単な監査を作成する方法のサンプルを次に示しますIPreUpdateEventListener

http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener
http://nhforge.org/wikis/howtonh/creating-an-audit-log-using-nhibernate-events.aspx


CreateDateちなみに、メソッドに問題はないはずUpdateです。あなたのUpdate方法はどのように見えますか?

通常のワークフローは、POST ActionMethodでビューモデルを取得し、NHibernateのISessionまたはカスタムリポジトリを使用してデータベースからエンティティオブジェクトをロードし、手動または次のようなツールを使用して、ビューモデルからエンティティにプロパティをマップすることです。AutoMapper。のようなプロパティCreateDateは、ビューモデルからエンティティへのマッピングでは無視する必要があります。

于 2012-06-17T21:19:22.990 に答える