gpt4 book ai didi

c# - 您能否确认 NHibernate 术语中的术语 'Save' 代表 INSERT?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:31 25 4
gpt4 key购买 nike

我是 NHibbernate 的初学者,目前我正在尝试了解“级联”属性及其设置选项。

如果您熟悉 Nhibernate,您已经知道级联属性的设置选项之一是:“save-update”

并且(在 www.ayende.com 站点中)解释为:“当对象被保存/更新时,检查关联并保存/更新任何需要它的对象(包括保存/更新多对多关联情景)。”

您能否确认 Nhibernate 术语中的 SAVE 代表 SQL 中的 INSERT?你知道是否有任何理由使用 SAVE 术语代替 INSERT?

最佳答案

NHibernate 的 Save-Update 适用于 UPDATEINSERT SQL 语句。

级联选项与 NHibernate 在保存实体时应该对其他相关实体执行的操作有关。作为Ayende writes in that post

  • - 不做任何级联,让用户自己处理。
  • Save-Update - 当对象被保存/更新时,检查关联并保存/更新任何需要它的对象(包括保存/更新多对多场景中的关联)。
  • 删除 - 当删除对象时,删除关联中的所有对象。
  • Delete-Orphan - 当对象被删除时,删除关联中的所有对象。除此之外,当一个对象从关联中删除并且不与另一个对象关联(孤立)时,也将其删除。
  • 全部 - 当对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。
  • All-Delete-Orphan - 当对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。除此之外,当一个对象从关联中删除并且不与另一个对象关联(孤立)时,也将其删除。

因此,Save-Update 基本上对 NHibernate 说,“在保存我的实体时,如果与该实体关联的任何对象是暂时的(尚未持久化),则持久化(保存)它们。”任何已经持久化的关联对象都将被更新。

它被称为Save-Update 的原因可能是它适用于Save(), Update() and SaveOrUpdate()

Fabio Maulo's NHibernate documentation , Chapter 9.9 talks about LifeStyles and Object graphs :

NHibernate does not fully implement "persistence by reachability", which would imply (inefficient) persistent garbage collection. However, due to popular demand, NHibernate does support the notion of entities becoming persistent when referenced by another persistent object. Associations marked cascade="save-update" behave in this way. If you wish to use this approach throughout your application, it's easier to specify the default-cascade attribute of the element.

关于c# - 您能否确认 NHibernate 术语中的术语 'Save' 代表 INSERT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com