這個問題很奇怪,因爲它在我們的數據管理器中的許多其他地方工作。出於某種原因,下面寫的任何新代碼都不會引發錯誤,但它不會在數據庫中更新。系統內存中的會話看起來是正確的,但在調用.Commit()
時沒有更改。NHibernate會話更改沒有被保存到數據庫
using (var scope = new UnitOfWorkScope())
{
InsuranceCertificate cert = _certificateRepository.SingleOrDefault(x => x.Id == certId);
cert.Status = new Enumeration<CertificateStatus>(CertificateStatus.Rejected);
cert.RejectedDate = DateTime.Now;
cert.RejectedReason = reason;
_certificateRepository.Add(cert);
scope.Commit();
scope.Complete();
}
我們正在使用流利的Nhibernate和溫莎城堡,如果那件事。同樣,以前的類似於上面的代碼也能按預期工作,但是任何新代碼都不會。
因爲我們直接使用會話,所以我在這個主題上找不到什麼幫助。有任何想法嗎?
EDIT
log4net的日誌說以下內容:2012-01-24 11:39:13475 [37] DEBUG NHibernate.Event.Default.AbstractSaveEventListener [(空)] <(空)> - 持久化實例:IDOI.Certificate.Domain.Model.Policy.InsuranceCertificate 2012-01-24 11:39:13 475 [DEBUG]調用NHibernate.Event.Default.DefaultSaveOrUpdateEventListener [(null)] <(null)> - 忽略持久化實例2012-01-24 11:39:13 475 [37] DEBUG NHibernate.Event.Default.DefaultSaveOrUpdateEventListener [(null)] <(null)> - 對象已經與會議有關:[IDOI.Certificate.Domain.Model.Policy.InsuranceCertificate#5]
什麼是你的'FlushMode'設置? – vcsjones
未知。它全部通過我們的Global.asax.cs文件進行設置。我會假設任何默認值。 – trambre
做了一些挖掘之後,它被設置爲自動。 – trambre