当设置了级联保存更新属性时,NHibernate 会不必要地更新对象吗?
Posted
技术标签:
【中文标题】当设置了级联保存更新属性时,NHibernate 会不必要地更新对象吗?【英文标题】:Will NHibernate unnecessarily update objects when the cascade save-update attribute is set? 【发布时间】:2012-05-24 00:43:52 【问题描述】:This SO question 解释 NHibernate 中级联属性的保存更新选项如下:
save-update - 当对象被保存/更新时,检查关联并保存/更新任何需要它的对象(包括保存/更新多对多场景中的关联)。
这是否意味着当关联对象触发数据库操作时,NHibernate 会跟踪已修改并需要在数据库中更新的对象,或者 NHibernate 会简单地更新每个人,而不管对他们进行了哪些修改?
我正在尝试找出该句子中 “需要” 词的确切含义。
谢谢!
【问题讨论】:
【参考方案1】:NHibernate 总是 跟踪修改过的对象;这与级联无关。
需要在这个上下文中基本上意味着当引用对象被保存/更新时,被引用的瞬态对象将被保存。
【讨论】:
我已经配置了 NHibernate 来显示它的 SQL 输出,当所有事情都在单个 Session 中完成时,它确实表现得如你所说,但在我的测试中 NHibernate 没有跨会话跟踪修改的对象,并为每个人发出不必要的 SQL 更新命令! 好吧,它当然不会跨会话跟踪。这不是它的设计方式。会话是工作单元。 支持将对象重新附加到不同的会话,但这不是理想的工作流程。以上是关于当设置了级联保存更新属性时,NHibernate 会不必要地更新对象吗?的主要内容,如果未能解决你的问题,请参考以下文章
React 16:componentDidUpdate 警告:安排了级联更新