nhibernate的一对多关系

栏目类(一)(栏目包含多个类别)

数据字典

1.1. 表Tb_ Subject(栏目表)
表名 Tb_ Subject
列名               空/非空 数据类型(精度范围) 约束条件
ID                   N          int PK,                   流水号
SubjectName  N      nvarchar(200)           栏目名称
 
1.2. 表Tb_ Class(类别表)
表名 Tb_ Class
列名        空/非空 数据类型(精度范围) 约束条件
ID               N         int PK,                流水号
SubjectID   N          Int                      栏目id
ClassName N      nvarchar(200)       类别名称
 
实体类:

public class TbSubject
 {
  #region Field Members
 
  private int _id;
  private string _subjectname;

  private ICollection _classes;
   
  #endregion End of Field Members
 
  #region Default Class Constuctor
  public TbSubject()
  {
  _id = 0;
  _subjectname = String.Empty;
  }
  #endregion End of Default Class Constuctor
 
  #region Property Members
  /// <summary>
  ///
  /// </summary>  
  public virtual int ID
  {
  get { return _id; }
  set { _id = value; }
  }
   
  /// <summary>
  ///
  /// </summary>  
  public virtual string SubjectName
  {
  get { return _subjectname; }
  set { _subjectname = value; }
  }
  /// <summary>
  ///
  /// </summary>  
  public virtual ICollection Classes
  {
  get { return _classes; }
  set { _classes = value; }
  }
   
  #endregion End of Property Members
 }

对应映射文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
 <class name="hicity_test.Models.TbSubject, hicity_test" table="Tb_Subject">
  <id name="ID" column="ID" type="System.Int32" unsaved-value="0">
  <generator class="identity" />
  </id>
  <property name="SubjectName" column="SubjectName" type="System.String" not-null="true" />
  <!--一个Subject对应多个class -->
  <set name="Classes" inverse="true" table="Tb_Class" cascade="all">
  <key column="SubjectID" foreign-key="FK_SubjectClass"/>
  <!--一个Subject对应多个class-->
  <one-to-many class="hicity_test.Models.TbClass, hicity_test" />
  </set>
 </class>
</hibernate-mapping>
类别(多)

public class TbClass
 {
  #region Field Members
 
  private int _id;
  private int _subjectid;
  private string _classname;


  private TbSubject _subject;
  #endregion End of Field Members
 
  #region Default Class Constuctor
  public TbClass()
  {
  _id = 0;
  _subjectid = 0;
  _classname = String.Empty;
  }
  #endregion End of Default Class Constuctor
 
  #region Property Members
  /// <summary>
  ///
  /// </summary>  
  public virtual int ID
  {
  get { return _id; }
  set { _id = value; }
  }
   
  /// <summary>
  ///
  /// </summary>  
  public virtual int SubjectID
  {
  get { return _subjectid; }
  set { _subjectid = value; }
  }
   
  /// <summary>
  ///
  /// </summary>  
  public virtual string ClassName
  {
  get { return _classname; }
  set { _classname = value; }
  }
  /// <summary>
  ///
  /// </summary>  
  public virtual TbSubject Subject
  {
  get { return _subject; }
  set { _subject = value; }
  }
   
   
  #endregion End of Property Members
 }
对应映射文件

 <?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
 <class name="hicity_test.Models.TbClass, hicity_test" table="Tb_Class"> 
  <id name="ID" column="ID" type="System.Int32" unsaved-value="0">
  <generator class="identity" />
  </id>
  <!--
  <property name="SubjectID" column="SubjectID" type="System.Int32" />-->
  <property name="ClassName" column="ClassName" type="System.String" not-null="true" />
  <!--一个class属于一个Subject-->

  <many-to-one name="Subject" cascade="all"
  outer-join="auto"
  update="true"
  insert="true" column="SubjectID" 
  not-null="true" class="hicity_test.Models.TbSubject, hicity_test" foreign-key="FK_SubjectClass"/>
 </class>
</hibernate-mapping>

测试:

TbSubject subject=TbSubjectBLL.LoadById(1);
  foreach (TbClass model in subject.Classes)
  {
  String s=model.ClassName;
  };
 OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值