上一节: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映射简单介绍到此,欢迎欣赏。