我們正在運行的webservices被調用來填充和更新我們的數據庫,在一個函數中,一個EntityReactionType get的webservice的調用者用ID填充。NHibernate拒絕刷新對象
EntityReactionType具有由實體和(驚訝)ReactionType組成的複合多對一密鑰。
這些ID被填充正確的值,然後我想從數據庫中刷新對象以檢查在數據庫中設置的一些值,但用戶不知道。在這種情況下:IsStart和IsClosing。
我做這一切用下面的代碼:(這是一個簡化剪斷但這個想法應該很清楚)
我可以看到刷新執行SQL,這是正確的,並表明這有ISSTART = False,並且IsClosing = True。
然而當我查看Refresh IsStart = null和IsClosing = False後的對象值時,
//entityReactionTypeRepository.Merge(reaction.EntityReactionType);
entityReactionTypeRepository.Refresh(reaction.EntityReactionType);
if (reaction.IsResolved == true || reaction.EntityReactionType.CloseDispute == true)
{
reaction.IsResolved = true;
reaction.Invoice.IsDisputed = false;
}
我自認爲註釋掉歸併線是我發現同時搜索谷歌,但什麼也沒有改變(的想法是,你不能刷新東西是不transistant,但什麼都沒有改變,SQL獲取的執行eitherway但值不會更新)
我接近在這個時候做一個工作,只是創建detachedcriteria並執行,但我知道這應該是這樣的可能。
問候,
Folkert
您可以發佈完整刷新方法的代碼嗎? – AlexCuse 2010-09-16 13:10:07
這只是調用當前的Session.Refresh(object) – 2010-09-16 13:19:43
這些值是如何在數據庫中設置的?觸發? – AlexCuse 2010-09-16 16:00:27