Nhibernate 复合主键

实体类:
using System;
using System.Collections;

namespace Antu.TEST{
    #region Flow

    /// <summary>
    /// 数据库表“ST_FLOW”的NHibernate映射类 Flow 。
    /// </summary>
    public class Flow
    {
        #region 变量

        private FlowKey _flowKey;
        private string _sname;
        private string _ename;
        private bool _isBack;
        private float _cx;
        private float _cy;
        private bool _ac;

        #endregion

        #region 构造函数

        /// <summary>
        /// 初始化<see cref="Flow"/>类的新实例。
        /// </summary>
        public Flow() { }

        /// <summary>
        /// 初始化<see cref="Flow"/>类的新实例。
        /// </summary>
        /// <param name="flowKey">主键。</param>
        /// <param name="sname">。</param>
        /// <param name="ename">。</param>
        /// <param name="isBack">。</param>
        /// <param name="cx">。</param>
        /// <param name="cy">。</param>
        /// <param name="ac">。</param>
        public Flow(string sname, string ename, bool isBack, float cx, float cy, bool ac)
        {
            this._sname = sname;
            this._ename = ename;
            this._isBack = isBack;
            this._cx = cx;
            this._cy = cy;
            this._ac = ac;
        }

        #endregion

        #region 属性

        /// <summary>
        /// 主键。
        /// </summary>
        public virtual FlowKey MyFlowKey
        {
            get { return _flowKey; }
            set { _flowKey = value; }
        }

        /// <summary>
        /// 开始节点。
        /// </summary>
        public virtual string Sname
        {
            get { return _sname; }
            set
            {
                if (string.IsNullOrEmpty(value))
                    throw new ArgumentNullException("Sname", "不能为空!");
                if (value != null && value.Length > 64)
                    throw new ArgumentOutOfRangeException("Sname 的参数值无效", value, value.ToString());
                _sname = value;
            }
        }

        /// <summary>
        /// 终止节点。
        /// </summary>
        public virtual string Ename
        {
            get { return _ename; }
            set
            {
                if (string.IsNullOrEmpty(value))
                    throw new ArgumentNullException("Ename", "不能为空!");
                if (value != null && value.Length > 64)
                    throw new ArgumentOutOfRangeException("Ename 的参数值无效", value, value.ToString());
                _ename = value;
            }
        }

        /// <summary>
        /// 是否可以返回。
        /// </summary>
        public virtual bool IsBack
        {
            get { return _isBack; }
            set { _isBack = value; }
        }

        /// <summary>
        /// 。
        /// </summary>
        public virtual float Cx
        {
            get { return _cx; }
            set { _cx = value; }
        }

        /// <summary>
        /// 。
        /// </summary>
        public virtual float Cy
        {
            get { return _cy; }
            set { _cy = value; }
        }

        /// <summary>
        /// 。
        /// </summary>
        public virtual bool Ac
        {
            get { return _ac; }
            set { _ac = value; }
        }

        #endregion

    }

    /// <summary>
    /// 数据库表“ST_FLOW”的主键类。
    /// </summary>
    public class FlowKey
    {
        private string _wid;
        private string _fName;

        /// <summary>
        /// 初始化<see cref="StepKey"/>类的新实例。
        /// </summary>
        public FlowKey() { }

        /// <summary>
        /// 初始化<see cref="FlowKey"/>类的新实例。
        /// </summary>
        /// <param name="wid">流程ID。</param>
        /// <param name="fName">流向名称。</param>
        public FlowKey(string wid, string fName)
        {
            _wid = wid;
            _fName = fName;
        }

        /// <summary>
        /// 流程ID。
        /// </summary>
        public string Wid
        {
            set { _wid = value; }
            get { return _wid; }
        }

        /// <summary>
        /// 流向名称。
        /// </summary>
        public string FName
        {
            set { _fName = value; }
            get { return _fName; }
        }

         ///重要的俩步骤
        /// <summary>
        ///
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }

    }

    #endregion

映射:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Antu.Data.Flow, Antu.Data" table="ST_FLOW">
    <composite-id class="TEST.Data.FlowKey, TEST.Data" name="MyFlowKey">
      <key-property name="Wid" type="String" column="WID" />
      <key-property name="FName" type="String" column="FNAME" />
    </composite-id>
    <property name="Sname" type="String">
      <column name="SNAME" length="64" sql-type="VARCHAR2" not-null="true"/>
    </property>
    <property name="Ename" type="String">
      <column name="ENAME" length="64" sql-type="VARCHAR2" not-null="true"/>
    </property>
    <property name="IsBack" type="Boolean">
      <column name="IS_BACK" sql-type="NUMBER" not-null="true"/>
    </property>
    <property name="Cx" type="Single">
      <column name="CX" sql-type="NUMBER" not-null="false"/>
    </property>
    <property name="Cy" type="Single">
      <column name="CY" sql-type="NUMBER" not-null="false"/>
    </property>
    <property name="Ac" type="Boolean">
      <column name="AC" sql-type="NUMBER" not-null="false"/>
    </property>
  </class>
</hibernate-mapping>

//调用 :
  /// <summary>
        /// 更新土地开发整理基本信息数据。
        /// </summary>
        /// <param name="iid">案件ID。</param>
        /// <param name="wid"> 流程ID。</param>
        /// <param name="fName">流向名称。</param>
        /// <!--
        /// 创建人  : TEST
        /// 创建时间: 2008-01-18
        /// -->
        public static void UpdateBaseData(long iid,string wid, string fName)
        {
            //更新 ut_kfzl_proj_neaten 表项目各阶段状态
            KfzlProjNeaten kfzlProjNeaten = KfzlProjNeatenHelper.Instance.Find(iid);
            string[] arrStep = GlobalSetting.DevStepPools.Split(',');

            FlowKey key = new FlowKey(wid, fName);
            Flow flow = FlowHelper.Instance.Get(key);
               
         }

posted @ 2008-01-18 19:39  曲达子  阅读(1450)  评论(2编辑  收藏  举报