NHibernate composite-id联合主键配置

来源:互联网 发布:淘宝卖家怎么联系小二 编辑:程序博客网 时间:2024/04/29 17:32

1 复合主键 主键字段都不容许为null,如果有一个为null的话 那么整个对象就是null

 2  复合主键类 需要重新一些方法

 

复合主键类如下

   [Serializable]
    public class  DoorinfoCompositeID
    {
     
        public virtual string  DoorID { get; set; }

     
        public virtual string  AICID { get; set; }


        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }


        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }

 

主体类如下


    public class  AICDoorinfo
    {
       

        public virtual GisBuildAICDoorinfoCompositeID ID
        {
            get;
            set;
        }
        //单元名称
        public virtual string UnitNoName { get; set; }
     
    }

 

主体类的映射文件配置如下

 

<class name="AICDoorinfo">

  <composite-id name="ID" class="Model.Entities.GisBuildAICDoorinfoCompositeID,Model">
   <key-property name="DoorID" column="DoorID" type="string" ></key-property>
   <key-property name="AICID" column="AICID" type="string" ></key-property>
  </composite-id>
  <property name="UnitNoName" column="UnitNoName" type="string"  />
 </class>

 

 

还有更为简洁方式如:

 

<composite-id>
   <key-property  name="DoorID" column="DoorID" type="int"></key-property>
   <key-property  name="AICID" column="AICID"  type="int"></key-property>
  </composite-id>