【发布时间】:2012-08-25 06:42:21
【问题描述】:
我有一个双向的一对多关系,在映射的两端定义了 cascade="all",在一对多端定义了 inverse="true"。
当我调用 SaveOrUpdate 一个新实体时,它会在父表中正确插入一行,然后在子表中插入所有子对象。
但是,如果我有一个现有实体并更新子对象的某些属性(比如更改某些字符串属性),然后在父实体上调用 SaveOrUpdate,它只会更新父表中的信息。我期待它也会更新所有子实体。
这是预期的行为吗?我是否需要自己手动更新所有子对象?我不确定我的映射是否搞砸了(在这种情况下,我会将它们添加到问题中)或者这是否是 NHibernate 的行为方式。
编辑:发现错误;像往常一样,键盘和椅子之间存在问题。
【问题讨论】:
-
子实体是 proxy 对象。 NH 只会在它们被修改或父级的更新属性影响它们时更新它们。试一试:更新父级的某些内容和其中一个子级的其他内容,然后在父级调用
SaveOrUpdate。一切都应该更新。 -
是的,这就是我正在做的。我正在修改父对象中的文本属性和子对象中的文本属性。当我调用 SaveOrUpdate 时,仅更新父对象
-
好吧,这很尴尬。你能提供一些代码吗?
-
啊,我只是个白痴。我正在更新一个实际上没有映射到数据库字段的属性。它就像你说的那样工作。谢谢。
-
很高兴知道,感谢您的反馈。
标签: c# nhibernate