如何设置nhibernate多对多关系
来源:互联网 发布:c语言产生1到9的随机数 编辑:程序博客网 时间:2024/05/16 14:28
定义 关系数据库中两个表之间的一种关系, 该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。要表示多对多关系,您必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。
实例解释:
比如在常见的订单管理数据库当中“产品”表和“订单”表之间的关系。单个订单中可以包含多个产品。另一方面,一个产品可能出现在多个订单中。因此,对于“订单”表中的每条记录,都可能与“产品”表中的多条记录对应。此外,对于“产品”表中的每条记录,都可以与“订单”表中的多条记录对应。这种关系称为多对多关系,因为对于任何产品,都可以有多个订单,而对于任何订单,都可以包含许多产品。请注意,为了检测到表之间的现有多对多关系,务必考虑关系的双方。
要表示多对多关系,您必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。因此,第三个表记录关系的每个匹配项或实例。例如,“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
<many-to-many column="column_name" (1) class="ClassName" (2) fetch="join|select" (3) not-found="ignore|exception" (4) />
(1)column (必需): 这个元素的外键关键字段名
(2)class(必需): 关联类的名称
(3)fetch (可选, 默认值join): 为此关联打开外连接抓取或者序列选取抓取。这是特殊情况; 对于一个实体及其指向其他实体的多对多关联进全预先抓取(使用一条单独的SELECT), 你不仅需要对集合自身打开join,也需要对 <many-to-many>这个内嵌元素打开此属性。
(4)not-found (可选 - 默认为 exception): 指明引用的外键中缺少某些行该如何处理: ignore 会把缺失的行作为一个空引用处理。
<bag name="Sizes" table="SIZES" order-by="SIZE ASC"> <key column="OWNER"/> <element column="SIZE" type="Int32"/></bag>
- 如何设置nhibernate多对多关系
- NHibernate初探 多对多关系
- Nhibernate一对多关系
- 八、NHibernate关系之——多对多
- 用NHibernate处理带属性的多对多关系
- nhibernate的一对多关系
- 自己对NHibernate一对多,多对一关系映射的一些心得
- NHibernate之旅(11):探索多对多关系及其关联查询
- NHibernate之旅(11):探索多对多关系及其关联查询
- NHibernate之旅(11):探索多对多关系及其关联查询
- NHibernate一对多,多对一关系映射的一些心得 .
- NHibernate:一对多,多对一关系映射之修改,删除
- NHibernate之旅(11):探索多对多关系及其关联查询
- NHibernate初探 一对多关系测试
- nhibernate 一对多的配置关系
- [NHibernate]一对多关系(关联查询)
- [NHibernate]一对多关系(关联查询)
- hibernate之多对多关系设置
- hibernate 显示sql解决方案(内容转载)
- 嵌入式linux c 学习笔记6-指令
- JAVAScript编程基础
- ASP.NET中访问SQL 2005报表服务(一)
- 每位Android开发人员都应铭记的10句编程谚语
- 如何设置nhibernate多对多关系
- 在RedHatLinux上部署web站点(jdk+tomcat+mysql)
- AJAX学习笔记
- 详解 Android 的 Activity 组件
- Linux系统调用一览
- php 5.3 ChangeLog
- Windows多线程编程
- 晶圆厂:政府无力承受之轻
- AJAX应用技巧