我使用ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE WITH NO_WAIT
,
我想实现一个允许刷新修改对象的函数。 我的对象包含一个ID和一对多的关联,其中ID2为对象的对象
在我的关联中,我插入一个新的对象关联,因此NHibernate 4
为空,因为它在将主对象保存在数据库中时由ID2
生成器生成。
所以当我导致刷新以重新加载原始对象时,当有hilow
的新对象时,我有assertion failure (null identifier)
(通常没问题,当我ID = null
时没问题。
我在映射中放了saveOrUpdate
但执行时没有效果。
请给我一个解决问题的方法
提前谢谢。
答案 0 :(得分:0)
在我的关联中,我插入一个新的对象关联,因此ID2为null,因为它在将主对象保存在数据库中时由hilow生成器生成。
这里有一些不太准确的陈述。 hilo
生成器策略在将对象插入数据库之前生成id。它在Save
上执行,没有Save
实际将实体插入数据库,直到刷新会话。
如果您的ID保持null
,则很可能是因为您尚未在会话中保留该实体。在其上调用Save
,您的ID将不再是null
,而实体将不会在数据库中,除非您已刷新会话(或更改了需要立即插入的生成器策略,因为identity
)。
现在刷新一个尚未在数据库中的对象看起来对我来说是一个错误。你对这种行动有什么期望?
not-found="ignore"
不适用于处理不存在的实体的刷新。它允许忽略数据库中无效的外键。