2009-05-22 3 views
1

ビジネスエンティティへの更新を永続化する前に、どのプロパティが変更されたかを確認するために検証チェックを実行する必要があります。たとえば、「ステータス」プロパティが特定の値を持つ場合にのみ、特定のフィールドを更新することができます。例えば。 Orderエンティティのステータスがファイナライズされている場合、notes(文字列)フィールドのみを更新できます。 NHibernateを使用してこのようなことが可能か、ビジネスエンティティで自分自身で変更を追跡する必要がありますか?NHibernateを使用して、保持する前に更新されたフィールド(妥当性確認のため)を確認する

+0

コメントするにはもっと多くの担当者が必要なので、コードを投稿できますか?私の 'OldState'配列は常に空です... – Lodewijk

答えて

2

私があなたがしようとしていることを理解していれば、ガブリエルのソリューションはあなたが必要とするものではありません。そうでない場合は、event listenerを試すことができます。これらは、共通のイベント(saveのようなもの)にフックして、NHibernateがsave/insert/update/deleteを終了する前に何らかの処理を行うことを可能にします。また、IInterceptorインタフェースを実装することで、インターセプタを使用する方法もあります。

+0

IPreUpdateEventListenerの独自のカスタム実装を使用することができました。 OnPreUpdate()メソッドには、古い状態と新しい状態を含むPreUpdateEvent型のパラメータが含まれています。これらは、どのプロパティが変更されたかを比較するために比較できます。要求に応じて利用可能なソースコード – teevus

0

この種のことは確かに可能です。 Coding Instinctは素晴らしい投稿をしていますintroducing NHibernate.Validator

+0

あなたの答えをありがとう。私は、どのフィールドが変更されたのかを追跡し、それらのフィールドに対して検証ルールを適用することに重点を置いています。私が間違っていれば正解です。 – teevus

関連する問題