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