我已经投入使用NHibernate研究新应用程序的数据库性能问题。我注意到在某些表上NH会插入一行,然后使用完全相同的数据更新同一行。到目前为止,我收集的是插入后的更新是在定义了多对一关系的表上完成的。
无论如何,我原本预计NH会认为数据相同并且会抑制额外的更新。有没有办法抑制这种额外的更新?
答案 0 :(得分:6)
听起来你在多对一关联上有双向关系。
该问题的解决方案是在关系的一对多方面添加inverse="true"
。 Here is an example
插入由孩子保存其数据执行。更新由父设置数据库中子记录的parentId执行。如果关系是单向的,则第一个插入将不具有parentId,并且将需要更新。通过双向关系,您所描述的更新是多余的。 inverse="true"
告诉父母,孩子负责维持关系,从而阻止额外的更新。