2009-11-04 75 views
1

我在我正在開發的.net MVC項目中使用Fluent nHibernate存儲庫模型。在運行sql配置文件來檢查改進的領域時,我們注意到一些對象在沒有顯式保存的情況下得到UPDATE。有人知道爲什麼nHibernate會選擇更新對象嗎?爲什麼我的Fluent nHibernate存儲庫(隨機)更新我的域實體?

類:

public class Request : DomainEntity 
    { 
     public virtual string Code { get; set; } 

     public virtual string PartCode { get; set; } 

     public virtual string Description { get; set; } 

     public virtual int Quantity { get; set; } 

     public virtual decimal Price { get; set; } 

     public virtual DateTime DateRecieved { get; set; } 
    } 

使用範例:

var request = _repository.Query<Request>().Where(x => x.OemCode == "TEST").FirstOrDefault(); 

用不同的請求代碼運行此代碼後,我們的跟蹤經常發現這似乎是隨機的更新。有任何想法嗎?

回答

2

從HNhibernate documentation

不時的會的Isession執行 需要 SQL語句與保存在內存中 對象的狀態同步ADO.NET連接的 狀態。這個過程中,沖洗,默認情況下在以下點發生

  • 從查找()或可枚舉()
  • 從NHibernate.ITransaction.Commit)一些調用(
  • 從ISession.Flush()

您可以通過設置ISession.FlushMode屬性覆蓋此行爲。

相關問題