0

NHibernate を使用して、私の NUnit テストで、session.Delete(_user)where _useris a persisted object などの呼び出しを行うことがあります。

私の問題は、トランザクション内にこれと他の更新が含まれていない限り、成功しないことです。

そう、

CurrentSessionContext.Bind(GetHibernateSessionFactory().OpenSession());
ITransaction trans=session.BeginTransaction()
session.Delete(_user);
trans.Commit();
CurrentSessionContext.Unbind(GetHibernateSessionFactory())

動作します。

しかし、

CurrentSessionContext.Bind(GetHibernateSessionFactory().OpenSession());
session.Delete(_user);
CurrentSessionContext.Unbind(GetHibernateSessionFactory())

そうではありませんが、報告されている例外や問題はまだありません。

何か案は?

4

1 に答える 1

3

NHibernate は、セッションがフラッシュされているときにのみ、データベースに更新 / 挿入 / 削除を送信します。

Flush() を呼び出すことで明示的にこれを行うことができますが、構成も確認する必要があります。デフォルトのフラッシュ動作も指定できます。

興味深い読み物:

NHibernate ISession Flush: いつ、どこで、なぜ使用するのか? NHibernate フラッシュ -- 仕組みは?

于 2013-01-10T12:53:28.300 に答える