Nhibernate 複合主鍵

來源:互聯網
上載者:User

實體類:
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);
               
         }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.