Nhibernate开发专题博客

Nhibernate开发专题博客,为您精选Nhibernate开发教程,助您开发愉快!

公告信息
欢迎光临Nhibernate开发专题博客,祝您开发愉快!
文章档案

NHibernate单双主键与唯一外键映射-NHibernate入门到精通系列8


上一节:NHibernate多对一xml映射-NHibernate入门到精通系列7,介绍了NHibernate多对一的相关xml映射。

本节将介绍
NHibernate一对的xml映射,为您介绍NHibernate单双主键与唯一外键映射相关内容。

顺路推荐下国产优秀框架:CYQ.Data 数据框架


在NHibernate中,一对多分以下几种映射类型:

1:单向主键映射

2:双向主键映射

3:唯一外键映射

下面分别来介绍一下这三种映射类型:

一:NHibernate单向主键映射

先上一图:


一个家庭一个孩子的关系,一对一。

NHibernate映射的Xml为:

学生表:

  <class name="Student" table="T_Student" lazy="true" >

    <id name="ID" column="StudentID" type="int">
      <generator class="native"/>
    </id>

    <property name="Name" type="string" length="51"/>  
   
  </class>

家庭表:

  <class name="Family" table="T_Family" lazy="true" >

    <id name="ID" column="FamilyID" type="int">
      <generator class="foreign">
        <param name="property">Student</param>
      </generator>
    </id>

    <property name="Adress" type="string" length="100"/>

    <one-to-one name="Student" constrained="true"/>
  </class>

至于实体和示例,前几节讲的太多,这里不多举例了,相信从头看到这一节的,基础的增删改查示例都会写了。


二:NHibernate双向主键映射

双向主键关联映射:仅需要在学生映射中加入:<one-to-one name="Family" class="Family"/>节点,即可实现双向主键关联映射的实体类结构。

如:
<class name="Student" table="T_Student" lazy="true" >

...省略....

<one-to-one name="Family" class="Family"/>
   
</class>



三:NHibernate唯一外键映射

唯一外键关联映射是非主键字段的“一对一”关联,如一个班级对应了一个班主任老师,一个班主任老师管理一个班级。

Xml映射示例:

<class name="Class" table="T_Class" >

    <id name="ID" column="ClassID" type="int">
      <generator class="native"/>
    </id>

    <property name="Name" type="string" length="51"/>

    <many-to-one name="Teacher" class="Teacher" column="TeacherID" unique="true"/>
   
  </class>


  <class name="Teacher" table="T_Teacher">

    <id name="ID" column="TeacherID" type="int">
      <generator class="native"/>
    </id>

    <property name="Name" type="string" length="51"/>

    <one-to-one name="Class" class="Class" property-ref="Teacher"/>

  </class>

 

提示:

在Class类中使用标签,设置unique属性为true。

接着在Teacher类中使用标签,设置属性Class的property-ref指向Teacher。


补充提示:
唯一外键映射使用的是标签,默认cascade是“none”。

这样必须确保在没有引用临时态(Transient)的实例下才能持久化数据。


本文NHibernate一对多xml映射简单介绍到此,欢迎欣赏。



新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"

2011/9/7 15:40:03 | Nhibernate从入门到精通系列 | |

  • 发表评论