2012-01-30 52 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

那隻會延遲刷新,不會選擇更改 – 2012-01-30 15:25:33

0

您可以使用事件系統來跳過保存特定的實體,但你陷入困境。

您還可以通過Evict()會話中的特定實體。

經驗法則是:如果您不想保存對實體的更改,請勿修改實體。您在致電提交時必須做好所有更改。

相關問題