猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
NHibernate:如何用一对多的关系来表示多到多的关系?
我在网上读过一篇文章(我再也找不到那篇文章了),一段多到多的关系可以被一对多的关系所取代。有人能举个例子吗?
慕容708150
浏览 448
回答 2
2回答
智慧大石
我只是想问这个问题,然后意识到,没有任何答案。这是一个遗憾,尽管我经常指出NHibernate文档声明:24.最佳做法不要使用外来的关联映射。真正的多到多关联的良好用法是罕见的。大多数情况下,您需要存储在“链接表”中的其他信息。在这种情况下,对中间链接类使用两个一对多的关联要好得多。事实上,我们认为大多数的关联是一对多的和多对一的,在使用任何其他的关联风格时,你应该小心,并问自己是否真的有必要。下面的示例23.2.作者/作品..摘录,简化版本的多到多的关系Author和Work:<class name="Work" table="works" ...> <id name="Id" column="id" generator="native" /> ... <set name="Authors" table="author_work" lazy="true"> <key> <column name="work_id" not-null="true"/> </key> <many-to-many class="Author"> <column name="author_id" not-null="true"/> </many-to-many> </set></class>它的多对多目标作者:<class name="Author" table="authors"> ... <set name="Works" table="author_work" inverse="true" lazy="true"> <key column="author_id"/> <many-to-many class="Work" column="work_id"/> </set></class>因此,如果我们想订购这套装货工程,我们确实有一个问题。对表中没有列。但更重要的是,没有办法管理这样的专栏。我们所能做的就是引入对偶对象:AuthorWork并根据需要扩展对表。public class AuthorWork{ public virtual Author Author { get; set; } public virtual Work Work { get; set; } public virtual int OrderBy { get; set; }}AuthorWork的映射<class name="AuthorWork" table="author_work"> ... <many-to-one name="Author" column="author_id" /> <many-to-one name="Workr" column="work_id" /> <property name="OrderBy" />有了这个,我们可以将多到多的映射转换为一对多的映射,例如作者集合:<set name="Authors" lazy="true" order-by="OrderBy"> <key column="work_id" not-null="true"/> <one-to-many class="AuthorWork" /></set>我们可以管理实体AuthorWork,设置OrderBy列,从而有效地处理配对表。注:必须同意这一建议,在综述中提出的要求越多,我们就越高兴我们有办法来管理这种关系!
0
0
0
aluckdog
由于关系DBMS通常不支持多到多关系,所以这些关系使用一个链接表和两个一对多的关系来表示。例如,多到多之间的关系UserS和Roles表示为User one-to-many UserRoles many-to-one Role..NHibernate通常隐藏这一点,并允许多到多的关系商店透明。如果需要,可以始终选择显式地映射链接表。你会给我地图User, Role 和 UserRoles,在哪里UserRoles包含两个多对一的关系(到User和一个Role分别)在这种情况下User也不Role的收藏(一对多)UserRoles实例(或者至少它们可以是反向的)。这对于减少内存占用非常有用,因为您需要将较少的集合加载到内存中。缺点是查询变得更加复杂。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
源码
spark分组排序提取前N个值
1 回答
请问转让门店小程序需要源码吗?门店小程序有自己的源代码吗?是否要注册计算机软件著作权才可以交易?
1 回答
算法与数据结构
数据结构中,与所使用的计算机无关的数据是什么?
1 回答
学完C语言之后是先学数据结构还是先学JAVA好呢?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续