我有以下映射:
<bag name="BList" table="A_TABLE" inverse="true" lazy="false" cascade="all-delete-orphan">
<key column="A_ID"/>
<one-to-many
class="B, Model" />
</bag>
和
<many-to-one name="A"
class="A, Model"
column="A_ID"
not-null="true" />
执行插入和更新工作正常(在从集合中添加和删除时),但是在抛出异常时始终会获取对象。
failed: NHibernate.Exceptions.GenericADOException : could not load an entity: [Model.B#5816932][SQL: SELECT ...]
----> System.NullReferenceException : Object reference not set to an instance of an object.
... OR
NHibernate.Exceptions.GenericADOException : could not initialize a collection: [Model.A.BList#1364389][SQL: ...]
----> System.NullReferenceException : Object reference not set to an instance of an object.
...取决于您要获取的对象。 我确定我在这里错过了一个简单的事情,因为它在我实现cascade =“all-delete-orphan”之前曾经工作过。
任何帮助都会受到极大关注。
答案 0 :(得分:0)
事实证明,映射本身是正确的。 问题出现在1个对象的构造函数中......
我有一个默认的无参数构造函数,它是另一个构造函数的重载。
public B() : this(null) { }
其他建构者则有类似
的东西public B(A c)
{
A= c;
}
无论哪种方式,删除构造函数上的重载使我的所有测试都通过:D