2011-03-03 58 views
1

在我的ASP.NET webforms應用程序中,我主要收到以上異常,並且:
- cascade =「all-delete-orphan」的集合不再被引用擁有實體實例:Persistence.Product.ModelMap
- 收集被沖洗兩次處理()
- 一個集合中沒有找到共享引用:Persistence.Product.ModelMap
當我取回產品。只有當我有兩個或更多的請求一次打到服務器時纔會發生。我爲每個請求使用一個會話。NHibernate - 找到對集合的共享引用

的屬性,ModelMap,被定義爲在產品映射定義在Hibernate XML如下:

<bag name="ModelMap" table="MapProductModel" cascade="all-delete-orphan" lazy="true" inverse="true" where="IsDeleted=0"> 
    <key column="fkProductId" /> 
    <one-to-many class="MapProductModel" /> 
</bag> 

這發生在下面的代碼行

IList<T> itemList = criteria.List<T>(); 

當檢索所述產品。

任何幫助非常感謝,谷歌並沒有真正出現任何東西。

回答

1

criteria.List觸發會話刷新,導致NH遍歷所有對象並找出需要發送到db的命令。任何其他會話刷新都可能觸發相同的異常。

有關您使用ModelMap的方式會導致刷新週期中斷。當我遇到這些錯誤時,我通常會通過評論我逐一引用集合的地方來縮小它的範圍。一旦你知道有問題的線修復應該很容易(希望)

+0

我已經通過在ISession對象周圍使用鎖來臨時修復它。不過,會話工廠會根據每個請求創建會話,所以我覺得很奇怪,當會話應該每個線程都是唯一的時候,它看起來像是線程問題。 – Sam 2011-03-03 13:21:10