[NHibernate]关联映射

简介:

系列文章

[Nhibernate]体系结构

[NHibernate]ISessionFactory配置

[NHibernate]持久化类(Persistent Classes)

[NHibernate]O/R Mapping基础

[NHibernate]集合类(Collections)映射 

引言

单向关联是最常用的也是最难正确使用的。在本文中会逐个经历规范的案例,从单向映射开始,然后涉及双向的案例。我们会在所有的例子中hi用Person和Address。例子中没有包括命名空间和程序集,我们把关注点放在重要的方面。

我们通过是否使用表连接和多样性(单向或双向)分类关联。

在传统的数据模型中允许为空的外键是不适用的,所以我们的例子中没有使用允许为空的外键,在NHibernate中这不是必须的,如果你删除控制的约束,映射会照常工作。

单向关联

多对一(many to one)

一对一(one to one)

一对多(one to many)

使用表连接的单向关联

多对一(many to one)

一对一(one to one)

一对多(one to many)

多对多(many to many)

双向关联

一对多(one to many)/多对一(many to one)

双向的一对多(one to many)关联是普通的关联类型。(这是标准的parent/child关系)

复制代码
 1 <class name="Person">
 2  <id name="Id" column="personId">
 3   <generator class="native" />
 4  </id>
 5  <many-to-one name="Address"
 6   column="addressId"
 7   not-null="true"
 8  />
 9 </class>
10 <class name="Address">
11  <id name="Id" column="addressId">
12   <generator class="native" />
13  </id>
14  <set name="People" inverse="true">
15   <key column="addressId" />
16   <one-to-many class="Person" />
17  </set>
18 </class>
19 create table Person 
20 (
21  personId bigint not null primary key,
22  addressId bigint not null
23 )
24 create table Address
25 (
26  addressId bigint not null primary key
27 )
复制代码

     一对一(one to one)

使用表连接的双向关联

一对多(one to many)/多对一(many to one)

一对一(one to one)

多对多(many to many)

总结

这里对知识点有个大概的了解,具体应用还需在后续的文章中,通过例子来说明。

本文来自《NHibernat 中文文档》

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3720259.html
目录
相关文章
【Axure教程】移动端图片管理、上传、分享原型
【Axure教程】移动端图片管理、上传、分享原型
【Axure教程】移动端图片管理、上传、分享原型
|
机器学习/深度学习 传感器 自动驾驶
自动驾驶技术中的模仿学习
自动驾驶中的模仿学习是一种关键技术,用于使自动驾驶系统能够学习和模仿人类驾驶行为。通过模仿驾驶员的操作,自动驾驶车辆可以在复杂的道路环境中实现类似人类的驾驶决策和操作,从而提升安全性、舒适性和可靠性。
318 3
|
9月前
|
存储 供应链 物联网
区块链技术的未来发展趋势:革新、挑战与机遇
区块链技术的未来发展趋势:革新、挑战与机遇
474 8
|
9月前
|
存储 JSON API
义乌购商品列表数据接口(义乌购API系列)
义乌购作为全球知名的小商品批发平台,提供了丰富的商品数据接口。通过其商品列表接口,开发者和商家可以获取商品名称、价格、库存等信息,助力电商数据分析、竞品调研及店铺运营优化。本文详细介绍该接口的概念、请求方式、参数与响应数据,并提供Python请求示例,帮助用户高效利用接口资源。接口支持HTTP/HTTPS协议的GET和POST请求,返回JSON格式数据,需在开放平台注册并申请权限,遵守调用限制。
|
11月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
人工智能 搜索推荐 大数据
智能食品生产:自动化与定制化的食品制造
【10月更文挑战第26天】本文探讨了智能食品生产中的自动化与定制化趋势。自动化技术在原料处理、加工制造、包装和质检等环节的应用,显著提高了生产效率和产品质量。智能化技术则通过物联网、大数据、云计算和人工智能等手段,实现了更高效、精准和灵活的生产,并能满足消费者的个性化需求。虽然面临高成本、技术维护和数据安全等挑战,但政府和企业共同努力,将推动食品行业的健康和可持续发展。
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】Chameleon多模态模型探究
【机器学习】Chameleon多模态模型探究
461 5
|
网络协议 网络架构
【计网·湖科大·思科】实验六 IP数据报的发送和转发流程、默认路由和特定主机路由
【计网·湖科大·思科】实验六 IP数据报的发送和转发流程、默认路由和特定主机路由
476 0
|
Web App开发 人工智能
超好用的chatGPT提示词库,解决您不会提问的痛点
超好用的chatGPT提示词库,解决您不会提问的痛点
|
设计模式 程序员 开发者
拥抱开源:技术共享时代的个人成长之旅
在信息技术迅猛发展的今天,"开放源代码"(Open Source)已不仅仅是一种软件许可协议,它更是一种推动创新、促进协作和共享知识的运动。本文将探讨开源文化如何影响个人开发者的技术成长,以及如何在拥抱开源的过程中提升自我。从个人经历出发,我们将分析开源项目参与对技能提升、网络建设和职业发展的具体益处,并讨论在这一过程中可能遇到的挑战及其解决策略。