第6章 关联映射
目录
- 简介
- 单向关联
-
- 多对一(many to one)
- 一对一(one to one)
- 一对多(one to many)
- 使用表连接的单向关联
-
- 一对多(one to many)
- 多对一(many to one)
- 一对一(one to one)
- 多对多(many to many)
- 双向关联
-
- 一对多(one to many) / 多对一(many to one)
- 一对一(one to one)
- 使用表连接的双向关联
-
- 一对多(one to many) / 多对一(many to one)
- 一对一(one to one)
- 多对多(many to many)
单向关联是最常用的也是最难正确使用的。在本章中会逐个经历规范的案例, 从单向映射开始,然后涉及双向的案例。我们会在所有的例子中使用Person
和 Address
。例子中没有包括命名空间和程序集,我们把关注点放在重要的方面。
我们通过是否使用表连接和多样性(单向或双向)分类关联。
在传统的数据模型中允许为空的外键是不实用的,所以我们的例子中没有使用允许为空的外键。在NHibernate中这不是必须的,如果你删除空值的约束, 映射会照常工作。
双向的一对多(one-to-many)关联是普通的关联类型。(这是标准的parent/child关系。)
<class name="Person"> <id name="Id" column="personId"> <generator class="native" /> </id> <many-to-one name="Address" column="addressId" not-null="true" /> </class> <class name="Address"> <id name="Id" column="addressId"> <generator class="native" /> </id> <set name="People" inverse="true"> <key column="addressId" /> <one-to-many class="Person" /> </set> </class>
create table Person ( personId bigint not null primary key, addressId bigint not null ) create table Address ( addressId bigint not null primary key )
分类:
NHibernate
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构