nhibernate(またはhibernate)条件付きカスケード
-
10-10-2019 - |
質問
私にはクラスユーザーがいて、それには多くのセッションがあるプロパティイベントがあります。基本的に、ユーザーは多くのセッション時間があるイベントに登録します。
ユーザーはイベントに登録できますが、セッション時間は純粋に有益です。
しかし、NHでユーザーをデータベースに書き込むと、セッションの時間も更新されます。イベントを作成/更新するときに、セッション時間を挿入/更新する必要があることを知って、どうすればそれを防ぐことができますか。
解決
これはあなたの質問に完全に適用されるわけではないかもしれませんが、特定のビジネスルールに基づいて条件付きでカスケード削除を望んでいた問題がありました。
多くの場合、あなたはあなたの永続的なロジックでこれを処理することができます。 Nhibernateのイベントリスナーと一緒に行ったケースがありました。
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();
}
}
}
}
所属していません StackOverflow