0

Linq to SQL や Entity Framework と同じように、NHibernate で「追加」操作をキューに入れる方法はありますか?

エンティティをリポジトリに追加したいのですが、ビジネス ロジックが複雑であるため、すぐにデータベースに保存したくありません。Entity Framework と同じように、ITransaction.Commit() を呼び出すときにすべての変更を送信したいと考えています。それをしてもいいですか?

注: ISession.Save() メソッドを呼び出すとすぐに NHibernate が挿入コマンドを実行することがわかりましたが、これは想定外です。

更新: FlushMode を Commit に設定してみます。ただし、ITransaction.Commit() を呼び出したときにすべての変更をコミットするのではなく、エンティティをすぐに保存します。

更新 2ここで理由を見つけましたhttp://nhibernate.info/doc/nh/en/index.html#manipulatingdata-flushing : (例外は、ネイティブ ID 生成を使用するオブジェクトが保存時に挿入されることです)。IDジェネレーターを「ID」以外のものにしか変更できませんか?EntityFramework のソリューションに似たソリューションは他にありませんか?

4

2 に答える 2

3

session.BeginTransaction()を使用して、トランザクションについて読んでください。

于 2010-10-13T11:27:40.500 に答える
2

それがidentity仕組みです。session.Save は POID を返します。ID を使用する場合にそれを取得する唯一の方法は、実際の挿入を実行することです。

詳細はこちら: http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html

于 2010-10-13T15:29:30.587 に答える