1
如何映射具體類的集合屬性,而不是接口? 它必須是具體的課程!我無法控制要映射的類,所以我無法更改爲接口。nhibernate自定義集合映射
現在我試圖通過編寫自定義IUserCollectionType
實現和自定義IPersistentCollection
實現來解決此問題。
但是...以下異常停止畝進展:
Test method ShouldSaveEntityWithSections threw exception:
NHibernate.StaleStateException: Batch update returned unexpected row count from update; actual row count: 0; expected: 1
探查表明,NHibernate的不嘗試插入相關實體到數據庫中,但嘗試更新它的外鍵的父對象。
的映射是這樣的:
<set name="Rows" table="Rows" lazy="false" cascade="all"
collection-type="My.PersistentListType`1[Blabla.Row, Blabla], My">
<key column="ParentID" not-null="true" />
<one-to-many class="Blabla.Row, Blabla" />
</set>
這是怎麼回事?爲什麼不NHibernate插入子實體到數據庫?
你能告訴我們IUserCollectionType和IPersistentCollection實現嗎?很可能有問題 – Firo
不,問題在測試中。集合元素類型(在我的例子中是'Blabla.Row')沒有默認的構造函數。相反,它有一個接受幾個參數的參數之一,其中一個是用作主鍵值的「Guid」。我錯誤地通過了'Guid.NewGuid()'作爲一個值,導致NHibernate認爲該對象已經存在。 –
考慮發佈該答案並接受它 – Firo