栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时在NHibernate / Hibernate OneToMany关系上使用inverse = false?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时在NHibernate / Hibernate OneToMany关系上使用inverse = false?

正如Matthieu所说,唯一不想设置inverse = true的情况是,孩子对自己负责更新本身是没有意义的,例如孩子不了解其父母。

让我们尝试一个现实世界,而不是完全没有人为的示例:

<class name="SpyMaster" table="SpyMaster" lazy="true">  <id name="Id">    <generator />  </id>  <property name="Name"/>  <set name="Spies" table="Spy" cascade="save-update">    <key column="SpyMasterId"/>    <one-to-many />  </set></class><class name="Spy" table="Spy" lazy="true">  <id name="Id">    <generator />  </id>  <property name="Name"/></class>

间谍主管可以有间谍,但间谍永远不知道自己的间谍主管是谁,因为我们没有在间谍类中包括多对一关系。同样(方便地),间谍可能会变成流氓,因此不需要与间谍主管关联。我们可以如下创建实体:

var sm = new SpyMaster{    Name = "Head of Operation Treadstone"};sm.Spies.Add(new Spy{    Name = "Bourne",    //SpyMaster = sm // Can't do this});session.Save(sm);

在这种情况下,您可以将FK列设置为可空值,因为保存sm的操作会插入SpyMaster表和Spy表中,只有在此之后,它才会更新Spy表以设置FK。在这种情况下,如果我们将inverse
= true设置为FK,则永远不会更新。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号