1

私は多くのセッションを持つプロパティEventを持つUserというクラスを持っています。基本的に、ユーザーは多くのセッション時間を持つイベントに登録します。nhibernate(または休止状態)条件付きカスケード

ユーザーはイベントに登録できますが、セッション時間は純粋に参考になります。

しかし、NHを使用してデータベースにユーザーを書き込むと、セッション時間も更新されます。イベントを作成/更新するときにセッションの挿入/更新が必要であることを知っていると、どうすればそれを防ぐことができますか?

+0

いくつかの質問: ユーザーはプロパティとしてイベントを持っていますか?ユーザーは1つのイベントのみ登録できますか?セッション - ユーザーはセッションに関連付けられているか、イベントにのみ関連付けられていますか? – bzarah

+0

また、あなたのエンティティと、呼び出しているコードをマッピングするコードを表示して、ユーザー/イベント/セッションを設定して保存することも非常に役に立ちます。 – bzarah

+0

実際、私はその問題をそのコアに単純化しました。したがって、この例では、thevuserは1つのイベントのみを持つことができ、セッションではなくイベントにのみ関連付けられます。 –

答えて

0

これはあなたの質問に完全には当てはまらないかもしれませんが、特定のビジネスルールに基づいて条件付きで削除をカスケードしたい問題がありました。

多くの場合、これを永続ロジックで処理できます。私はNHibernate Event Listenersに行ったケースがありました。

public class ConditionalDeleter: IPostDeleteEventListener 
    { 
     public void OnPostDelete(PostDeleteEvent @event) 
     { 
      var foo = @event.Entity as Foo; 
      if (foo != null) 
      { 
       if (foo.ShouldDeleteBar) 
       { 
        ISession session = @event.Session.GetSession(EntityMode.Poco); 
        session.Delete(foo.Bar); 

        session.Flush(); 
       } 
      } 
     } 
    } 
+0

あなたの提案をありがとうございます、私はそれを調べるためにいくつかの時間を見つけようとします –