NHibernate,刷新修改对象抛出AssertionFailure {null identifier}

时间:2017-05-19 09:41:28

标签: c# nhibernate one-to-many

我使用ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE WITH NO_WAIT

我想实现一个允许刷新修改对象的函数。 我的对象包含一个ID和一对多的关联,其中ID2为对象的对象

在我的关联中,我插入一个新的对象关联,因此NHibernate 4为空,因为它在将主对象保存在数据库中时由ID2生成器生成。

所以当我导致刷新以重新加载原始对象时,当有hilow的新对象时,我有assertion failure (null identifier)(通常没问题,当我ID = null时没问题。 我在映射中放了saveOrUpdate但执行时没有效果。

请给我一个解决问题的方法

提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

在我的关联中,我插入一个新的对象关联,因此ID2为null,因为它在将主对象保存在数据库中时由hilow生成器生成。

这里有一些不太准确的陈述。 hilo生成器策略在将对象插入数据库之前生成id。它在Save上执行,没有Save实际将实体插入数据库,直到刷新会话。

如果您的ID保持null,则很可能是因为您尚未在会话中保留该实体。在其上调用Save,您的ID将不再是null,而实体将不会在数据库中,除非您已刷新会话(或更改了需要立即插入的生成器策略,因为identity)。

现在刷新一个尚未在数据库中的对象看起来对我来说是一个错误。你对这种行动有什么期望?

not-found="ignore"不适用于处理不存在的实体的刷新。它允许忽略数据库中无效的外键。