2009-04-13 44 views
7

我有一個使用NHibernate的MVC應用程序。會話中的NHibernate錯誤。保存

我創建了一個模型,並試圖用NHibernate將數據插入到db中,因此請儘量簡單。

我得到session.Save(object)上的這個錯誤;

IndexOutOfRangeException是由用戶代碼

無效索引8未處理此SqlParameterCollection與計數= 8。

當我使用監視窗口查看對象中的數據時,似乎所有的數據看上去都是 ,並且集合也被初始化。

使用SQL 2005.

任何想法,爲什麼這可能發生請嗎?

Malcolm

回答

12

我使用NHibernate自己也有同樣的問題,我的情況是在映射中的問題。 在我的關聯上,我映射了一個包含關聯實體的屬性,也映射了一個僅包含關聯標識的屬性。

在我的情況下,解決方案是將update="false" insert="false"添加到包含ID的屬性的映射中。 像這樣:

<property name="AssociationId" column="AssociationColumnName" update="false" insert="false" /> 
<many-to-one name="Association" column="AssociationColumnName" property-ref="Id" not-null="false" /> 
+0

我也遇到過這個錯誤以及幾次,因爲它很少發生,我特意抓到了這個異常,並在自己的日誌中寫了一個提醒 – 2010-12-09 20:18:31

+0

哇! stackoverflow + fredrik ftw!感謝您爲此節省了大量時間。 – 2012-08-16 22:02:33

2

傢伙,如果你收到此檢查映射文件,我得到了同樣的錯誤,我有兩個propertise映射到同一列,我知道答案是相當晚了,這是對用戶誰來尋找同一個問題的答案。

注意:這可能不是唯一的原因,反正我是由於這一點。