////////////////////////////////////////////////////////////////////////////////////////////
///
/// Copyright (C), 2002-2008, Murphy Corporation.
///
/// FileName: FacadeBase.cs
/// Author: 胡晓伟
/// Version: beta
/// Description: BizFacade Foundation Class : Basic Biz Function Class ..
///
///
////////////////////////////////////////////////////////////////////////////////////////////
using System;
using System.Reflection;
using COM.Makinfo.DataAccess;
namespace COM.Makinfo.Facade
{
/// <summary>
/// FacadeBase 的摘要说明。
/// </summary>
public abstract class FacadeBase:IDisposable
{
protected DBAccess[] aryDBAccess;
public FacadeBase()
{
}
/// <summary>
/// 设置同在一个事务中的DBAccess实例。
/// </summary>
/// <param name="aryDBAccess"></param>
protected void SetAryDBAccess(params DBAccess[] aryDBAccess)
{
this.aryDBAccess = aryDBAccess;
}
/// <summary>
/// 运行事务处理方法。
/// </summary>
/// <param name="strMesthodeName">要运行的方法名。</param>
/// <param name="paramerts">方法的参数。</param>
/// <returns></returns>
protected object RunCooperation(string strMesthodeName,params object[] paramerts)
{
try
{
//Begin cooperation work.
BeginCooperation();
MethodBase method = this.GetType().GetMethod(strMesthodeName,
BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public);
object oResult = method.Invoke(this,paramerts);
//Commit.
CommitCooperation();
//Return value
return oResult;
}
catch(Exception ex)
{
//Rollback.
RollbackCooperation();
throw ex;
}
}
/// <summary>
/// 开始事务。
/// </summary>
private void BeginCooperation()
{
//Begin cooperation work.
DBAccess.BeginCooperation(aryDBAccess);
}
/// <summary>
/// 提交事务。
/// </summary>
private void CommitCooperation()
{
//Commit.
DBAccess.CommitCooperation(aryDBAccess);
}
/// <summary>
/// 回滚事务。
/// </summary>
private void RollbackCooperation()
{
//Rollback.
DBAccess.RollbackCooperation(aryDBAccess);
}
IDisposable 成员
}
}


浙公网安备 33010602011771号