【问题标题】:NHibernate - Should all child objects be updated when parent is saved, when cascade is save-update?NHibernate - 是否应该在保存父对象时更新所有子对象,当级联保存更新时?
【发布时间】:2012-08-25 06:42:21
【问题描述】:

我有一个双向的一对多关系,在映射的两端定义了 cascade="all",在一对多端定义了 inverse="true"。

当我调用 SaveOrUpdate 一个新实体时,它会在父表中正确插入一行,然后在子表中插入所有子对象。

但是,如果我有一个现有实体并更新子对象的某些属性(比如更改某些字符串属性),然后在父实体上调用 SaveOrUpdate,它只会更新父表中的信息。我期待它也会更新所有子实体。

这是预期的行为吗?我是否需要自己手动更新所有子对象?我不确定我的映射是否搞砸了(在这种情况下,我会将它们添加到问题中)或者这是否是 NHibernate 的行为方式。

编辑:发现错误;像往常一样,键盘和椅子之间存在问题。

【问题讨论】:

  • 子实体是 proxy 对象。 NH 只会在它们被修改或父级的更新属性影响它们时更新它们。试一试:更新父级的某些内容和其中一个子级的其他内容,然后在父级调用SaveOrUpdate。一切都应该更新。
  • 是的,这就是我正在做的。我正在修改父对象中的文本属性和子对象中的文本属性。当我调用 SaveOrUpdate 时,仅更新父对象
  • 好吧,这很尴尬。你能提供一些代码吗?
  • 啊,我只是个白痴。我正在更新一个实际上没有映射到数据库字段的属性。它就像你说的那样工作。谢谢。
  • 很高兴知道,感谢您的反馈。

标签: c# nhibernate


【解决方案1】:

没关系,我只是在更新一个没有映射到任何列的属性。

看起来 NH 将更新只需要更新的子记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多