C# 你能解释一下使用inverse=”的原因吗;“真的”;在尼比尔内特?

C# 你能解释一下使用inverse=”的原因吗;“真的”;在尼比尔内特?,c#,.net,nhibernate,nhibernate-mapping,C#,.net,Nhibernate,Nhibernate Mapping,您能否用一个要求该属性必须为“true”的示例来解释在NHibeernate的关系映射中使用inverse=“true”属性的原因?如果您有双向关联,那么从.net方面来说,您必须对双方都进行编码。像 parent.Children.Add(child); child.Parent = parent; 然而,从nhibernate的角度来看,默认情况下,这将为每一行发送2条update语句。您只需要更新子表的ParentId列。Inverse=true确保对该零件所做的更改不会导致DB中的任何

您能否用一个要求该属性必须为“true”的示例来解释在NHibeernate的关系映射中使用inverse=“true”属性的原因?

如果您有双向关联,那么从.net方面来说,您必须对双方都进行编码。像

parent.Children.Add(child);
child.Parent = parent;
然而,从nhibernate的角度来看,默认情况下,这将为每一行发送2条update语句。您只需要更新子表的ParentId列。Inverse=true确保对该零件所做的更改不会导致DB中的任何更改。因此,如果你使用Inverse=true,只需写下

parent.Children.Add(child);

数据库中不会发生任何事情,因为这是相反的一面。

如果您有一个双向关联,那么从.net方面来说,您必须对两边都进行编码。像

parent.Children.Add(child);
child.Parent = parent;
然而,从nhibernate的角度来看,默认情况下,这将为每一行发送2条update语句。您只需要更新子表的ParentId列。Inverse=true确保对该零件所做的更改不会导致DB中的任何更改。因此,如果你使用Inverse=true,只需写下

parent.Children.Add(child);

数据库中不会发生任何事情,因为这是反向侧。

那么从NH的角度来看,哪一侧是对数据库进行更新调用的原因?始终是非反向侧导致更新。如果忽略反向端,则从NH的角度来看,哪一方是对Db进行更新调用的原因?始终是非反向端导致更新。反向侧被忽略