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);
}