如何映射具体类的集合属性,而不是接口? 它必须是具体的课程!我无法控制我要映射的类,所以我无法更改为界面。
目前我正在尝试通过编写自定义IUserCollectionType
实施和自定义IPersistentCollection
实施来解决此问题。
但是......以下异常已经阻止了mu进展:
Test method ShouldSaveEntityWithSections threw exception:
NHibernate.StaleStateException: Batch update returned unexpected row count from update; actual row count: 0; expected: 1
Profiler显示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不将子实体插入db?
答案 0 :(得分:1)
回答我自己的问题。希望它会帮助遇到同样问题的人。
那个人应该检查他是否在状态中没有创建相关对象,这导致NHibernate认为它已经存在。
在我的情况下,我错误地将映射为主键的属性设置为Guid.NewGuid()
而不是Guid.Empty
。