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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值