2012-01-30 11 views
0

不要な変更をコミットするのを防ぐ最良の方法は何ですか?Transaction.CommitはBeginTransactionより前に加えられた変更を保存します

var a = session.Load<A>(id); 
a.Value = ParseExpressions(a.Value); 

using(var tx = session.BeginTransaction()) 
{ 
    // Do some work here 
    tx.Commit(); 
} 

Aオブジェクトは、作業を行うことができますが、トランザクションがコミットされたときにa.Valueがデータベースに保存される前に評価する必要がある表現が含まれています。

session.BeginTransaction()を保存した後に発生する変更は、になります。

私はsession.Clear()を呼び出そうとしましたが、Guid Idを持つエンティティが更新される代わりに保存されます。

大変助かりました。

答えて

0

ない100%は確かに私が正しく覚えているが、あなたは決してにsession.FlushModeを設定していない、と明示的に保存したいの変更を保存することができるはずです。

+0

これは、フラッシュを遅らせるだけで、変更を選択しません。 –

0

イベントシステムを使用して特定のエンティティをスキップすることはできますが、問題が発生している可能性があります。

また、セッションの特定のエンティティEvict()でもかまいません。

エンティティへの変更を保存しない場合は、エンティティを変更しないでください。コミットを呼び出すと、すべての変更が準備されている必要があります。

関連する問題