2010-08-30 37 views
1

我們使用NHibernate和Fluent映射來構建WebForms應用程序。Nhibernate在Win Server 2008上不更新級聯關係

在我們的模型中,我們有一個簡單的ReferencesCascade.All()集合的關係。當我們保存實體時,NH按預期行事,1)保存被引用的實體,2)更新設置子密鑰的父實體。

但是,將這個相同版本部署到我們的生產服務器(Win Server 2008)並將應用程序指向同一個數據庫時,會產生不同的輸出。 NH 1)保存了被引用的實體,..和..就是這樣,沒有別的事情發生!

我知道我們的測試和生產環境應該是相同的,等等,但我們現在正在部署,我根本無法弄清楚這是如何發生的。

在Win 2008 Server中有關於程序集權限或其他類似NH的任何已知問題?看起來代理由於某種原因無法正常工作,但我真的不知道爲什麼!

編輯1:分析NH日誌文件我可以發現NH沒有注意到引用的屬性在Win Server 2008中發生了變化。爲什麼?不知道,但它看起來越來越像代理問題。

任何幫助真的很感激。

菲利佩

+1

你打開了nHibernate日誌記錄。那裏有什麼東西可能表明有些差異。 – 2010-08-30 11:50:26

+0

@David,編輯通知它的帖子。我會嘗試將Castle的更改爲另一個代理,以查看是否有更改。 – jfneis 2010-08-30 13:08:58

回答

0

我終於發現是什麼原因導致的問題。 NH沒有更新關聯關係,因爲它沒有涵蓋這些表述的交易。

它看起來並不符合邏輯,但在其他情況下,如果您的交易處於開放狀態(例如:NHibernate FlushMode Auto Not Flushing Before Find),則只有NH才能正常運行。我們在另一個項目中遇到了這種情況,這個理論很適合。

但是Windows Server 2008呢?實際上,問題出在IIS 7的web.config文件中。由於我們使用OpenSessionInView設計的自動事務控件,我們註冊了一個httpModules項目。但在IIS 7中,我們必須註冊一個modules項目,而我們沒有它。由於它沒有配置,我們沒有交易,並沒有交易的東西不起作用。

獲得的經驗教訓#1:有史以來,交易是使用NHibernate必須的。 經驗教訓#2:從不禁用IIS兼容性消息(爲什麼有人這樣做?)。

Filipe