如果你在系统中使用了此架构,请标注出处,谢谢。

 /**//**//**/////////////////////////////////////////////////////////////////////////////////////////////
/**//**//**///////////////////////////////////////////////////////////////////////////////////////////// ///
/// ///    Copyright (C), 2002-2008, Murphy Corporation.
///    Copyright (C), 2002-2008, Murphy Corporation. ///
///     ///    FileName:        DBAccess.cs
///    FileName:        DBAccess.cs ///    Author:            胡晓伟
///    Author:            胡晓伟 ///    Version:          Beta
///    Version:          Beta  ///    Description:    DataAccess Foundation Class : Basic DB Function Class ..
///    Description:    DataAccess Foundation Class : Basic DB Function Class .. ///
///    ///
///                     ////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////// using System;
using System; using System.Data;
using System.Data; using System.Data.SqlClient;
using System.Data.SqlClient; using System.Data.OleDb;
using System.Data.OleDb; using System.Data.OracleClient;
using System.Data.OracleClient;
 using COM.Makinfo.DataEntity;
using COM.Makinfo.DataEntity; namespace COM.Makinfo.DataAccess
namespace COM.Makinfo.DataAccess

 {
{ public abstract class DBAccess:IDataAccess
    public abstract class DBAccess:IDataAccess
 
     {
{
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// SQL变量的前缀
        /// SQL变量的前缀 /// </summary>
        /// </summary> private const string        SQL_PARA_PREFIX = "@";
        private const string        SQL_PARA_PREFIX = "@"; private const string        ACE_PARA_PREFIX = "@";
        private const string        ACE_PARA_PREFIX = "@"; private const string        ORA_PARA_PREFIX = ":";
        private const string        ORA_PARA_PREFIX = ":";

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 初始化函数。
        /// 初始化函数。 /// </summary>
        /// </summary> public DBAccess()
        public DBAccess()
 
         {
{ }
        }


 PropertiesProperties#region Properties
        PropertiesProperties#region Properties
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到数据库信息。
        /// 得到数据库信息。 /// </summary>
        /// </summary> private DBInfoData dbInfoData
        private DBInfoData dbInfoData
 
         {
{ get
            get
 
             {
{ return DBInfoData.dbInfoData;
                return DBInfoData.dbInfoData; }
            } }
        } 
     private string    _ConnectionString = "";
        private string    _ConnectionString = "";    
 /**//**//**//// <summary>
        /**//**//**//// <summary> ///  得到连接数据库的字符串。
        ///  得到连接数据库的字符串。 /// </summary>
        /// </summary> public string ConnectionString
        public string ConnectionString
 
         {
{ get
            get
 
             {
{ if(this._ConnectionString == "")
                if(this._ConnectionString == "")
 
                 {
{ switch(DBType)
                    switch(DBType)
 
                     {
{ case DatabaseType.Access:
                        case DatabaseType.Access: this._ConnectionString =
                            this._ConnectionString =  "Provider=Microsoft.Jet.OLEDB.4.0;"+
                                "Provider=Microsoft.Jet.OLEDB.4.0;"+ "Data Source="+dbInfoData.Source+";"+
                                "Data Source="+dbInfoData.Source+";"+ "User Id="+dbInfoData.UserID+";"+
                                "User Id="+dbInfoData.UserID+";"+ "Password="+dbInfoData.Password +";" ;
                                "Password="+dbInfoData.Password +";" ;  break;
                            break; case DatabaseType.SQLServer:
                        case DatabaseType.SQLServer: this._ConnectionString =
                            this._ConnectionString =  " Data Source="+dbInfoData.Server + "; "+
                                " Data Source="+dbInfoData.Server + "; "+ " Initial Catalog="+dbInfoData.Source+"; " +
                                " Initial Catalog="+dbInfoData.Source+"; " + " user id="+dbInfoData.UserID + "; " +
                                " user id="+dbInfoData.UserID + "; " + " Password="+dbInfoData.Password + "; "+
                                " Password="+dbInfoData.Password + "; "+ " persist security info=False;"+
                                " persist security info=False;"+  " Connect Timeout="+dbInfoData.ConnectTimeOut.ToString()+ "; ";
                                " Connect Timeout="+dbInfoData.ConnectTimeOut.ToString()+ "; ";  break;
                            break; case DatabaseType.Oracle:
                        case DatabaseType.Oracle: this._ConnectionString =
                            this._ConnectionString =  " Data source=" + dbInfoData.Source + ";" +
                                " Data source=" + dbInfoData.Source + ";" + " User ID=" + dbInfoData.UserID + ";"+
                                " User ID=" + dbInfoData.UserID + ";"+ " password=" + dbInfoData.Password;
                                " password=" + dbInfoData.Password; break;
                            break; default:
                        default: this._ConnectionString =
                            this._ConnectionString =  " Data Source="+dbInfoData.Server + "; "+
                                " Data Source="+dbInfoData.Server + "; "+ " Initial Catalog="+dbInfoData.Source+"; " +
                                " Initial Catalog="+dbInfoData.Source+"; " + " user id="+dbInfoData.UserID + "; " +
                                " user id="+dbInfoData.UserID + "; " + " persist security info=False;"+
                                " persist security info=False;"+  " Connect Timeout="+dbInfoData.ConnectTimeOut.ToString()+ "; ";
                                " Connect Timeout="+dbInfoData.ConnectTimeOut.ToString()+ "; ";  break;
                            break;                }
                    } }
                } return this._ConnectionString;
                return this._ConnectionString; }
            }
 }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到数据库类型
        /// 得到数据库类型 /// </summary>
        /// </summary> protected DatabaseType DBType
        protected DatabaseType DBType
 
         {
{ get
            get
 
             {
{     return this.dbInfoData.DBType;
                return this.dbInfoData.DBType; }
            } }
        } private IDbConnection    _Conn;
        private IDbConnection    _Conn;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到一个数据库的实例,这个实例只在此类中使用。
        /// 得到一个数据库的实例,这个实例只在此类中使用。 /// </summary>
        /// </summary> private IDbConnection Conn
        private IDbConnection Conn
 
         {
{ get
            get
 
             {
{ switch(DBType)
                switch(DBType)
 
                 {
{ case DatabaseType.Access:
                    case DatabaseType.Access: this._Conn = new OleDbConnection
                        this._Conn = new OleDbConnection (ConnectionString);
                            (ConnectionString);  break;
                        break; case DatabaseType.SQLServer:
                    case DatabaseType.SQLServer: this._Conn = new SqlConnection
                        this._Conn = new SqlConnection (ConnectionString);
                            (ConnectionString);  break;
                        break; case DatabaseType.Oracle:
                    case DatabaseType.Oracle: this._Conn = new OracleConnection
                        this._Conn = new OracleConnection (ConnectionString);
                            (ConnectionString); break;
                        break; default:
                    default: this._Conn = new SqlConnection
                        this._Conn = new SqlConnection (ConnectionString);
                            (ConnectionString);  break;
                        break;                }
                } return this._Conn;
                return this._Conn; }
            } }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 获得数据库变量的前缀。
        /// 获得数据库变量的前缀。 /// </summary>
        /// </summary> /// <returns></returns>
        /// <returns></returns> protected string GetParaPreFix
        protected string GetParaPreFix
 
         {
{ get
            get
 
             {
{ string strRet = "";
                string strRet = ""; switch(DBType)
                switch(DBType)
 
                 {
{ case DatabaseType.Access:
                    case DatabaseType.Access: strRet = ACE_PARA_PREFIX;
                        strRet = ACE_PARA_PREFIX;  break;
                        break;
 case DatabaseType.SQLServer:
                    case DatabaseType.SQLServer: strRet = SQL_PARA_PREFIX;
                        strRet = SQL_PARA_PREFIX;  break;
                        break;
 case DatabaseType.Oracle:
                    case DatabaseType.Oracle: strRet = ORA_PARA_PREFIX;
                        strRet = ORA_PARA_PREFIX;  break;
                        break;
 default:
                    default: strRet = SQL_PARA_PREFIX;
                        strRet = SQL_PARA_PREFIX;  break;
                        break; }
                }
 strRet =  SQL_PARA_PREFIX  ;
                strRet =  SQL_PARA_PREFIX  ;              return strRet;
                return strRet; }
            } }
        } private IDbConnection    _TempConn;
        private IDbConnection    _TempConn;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到或设置一个临时的数据库连接的实例,他在事务处理中使用。
        /// 得到或设置一个临时的数据库连接的实例,他在事务处理中使用。 /// (用于交互式方法ExcuteCmdListCooperation)。
        /// (用于交互式方法ExcuteCmdListCooperation)。 /// </summary>
        /// </summary> protected IDbConnection TempConn
        protected IDbConnection TempConn
 
         {
{ get
            get
 
             {
{ return this._TempConn;
                return this._TempConn; }
            } set
            set
 
             {
{ this._TempConn = value;
                this._TempConn = value; }
            } }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到一个DataAdapter实例,其数据库连接和SelectCommand已经设置。
        /// 得到一个DataAdapter实例,其数据库连接和SelectCommand已经设置。 /// </summary>
        /// </summary> protected IDbDataAdapter InstanceAdap
        protected IDbDataAdapter InstanceAdap
 
         {
{ get
            get
 
             {
{ IDbDataAdapter da;
                IDbDataAdapter da; switch(DBType)
                switch(DBType)
 
                 {
{ case DatabaseType.Access:
                    case DatabaseType.Access: da = new OleDbDataAdapter((OleDbCommand)InstanceComm);
                        da = new OleDbDataAdapter((OleDbCommand)InstanceComm);  break;
                        break;
 case DatabaseType.SQLServer:
                    case DatabaseType.SQLServer: da = new SqlDataAdapter((SqlCommand)InstanceComm);
                        da = new SqlDataAdapter((SqlCommand)InstanceComm);  break;
                        break;
 case DatabaseType.Oracle:
                    case DatabaseType.Oracle: da = new OracleDataAdapter((OracleCommand)InstanceComm);
                        da = new OracleDataAdapter((OracleCommand)InstanceComm);  break;
                        break;
 default:
                    default: da = new SqlDataAdapter((SqlCommand)InstanceComm);
                        da = new SqlDataAdapter((SqlCommand)InstanceComm);  break;
                        break; }
                }
 return da;
                return da;
 }
            } }
        }

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到参数实例.
        /// 得到参数实例. /// </summary>
        /// </summary> protected IDbDataParameter InstanceParam
        protected IDbDataParameter InstanceParam
 
         {
{ get
            get
 
             {
{ IDbDataParameter dp;
                IDbDataParameter dp; switch(DBType)
                switch(DBType)
 
                 {
{ case DatabaseType.Access:
                    case DatabaseType.Access: dp = new OleDbParameter() ;
                        dp = new OleDbParameter() ;  break;
                        break;
 case DatabaseType.SQLServer:
                    case DatabaseType.SQLServer: dp = new  SqlParameter();
                        dp = new  SqlParameter();  break;
                        break;
 case DatabaseType.Oracle:
                    case DatabaseType.Oracle: dp = new  OracleParameter();
                        dp = new  OracleParameter();  break;
                        break;
 default:
                    default: dp = new SqlParameter();
                        dp = new SqlParameter();  break;
                        break; }
                }
 return dp;
                return dp;
 }
            } }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到一个Command实例,其数据库连接已经设置。
        /// 得到一个Command实例,其数据库连接已经设置。 /// 如果有事务,则事务也会自动设置完成(用于交互式方法ExcuteCmdListCooperation)。
        /// 如果有事务,则事务也会自动设置完成(用于交互式方法ExcuteCmdListCooperation)。 /// </summary>
        /// </summary> protected IDbCommand InstanceComm
        protected IDbCommand InstanceComm
 
         {
{ get
            get
 
             {
{     IDbCommand cmd;
                IDbCommand cmd; if(!this.IsCooperation)
                if(!this.IsCooperation)
 
                 {
{ switch(DBType)
                    switch(DBType)
 
                     {
{ case DatabaseType.Access:
                        case DatabaseType.Access: cmd = new OleDbCommand
                            cmd = new OleDbCommand ("",(OleDbConnection)Conn);
                                ("",(OleDbConnection)Conn); break;
                            break;
 case DatabaseType.SQLServer:
                        case DatabaseType.SQLServer: cmd = new SqlCommand
                            cmd = new SqlCommand ("",(SqlConnection)Conn);
                                ("",(SqlConnection)Conn);  break;
                            break;
 case DatabaseType.Oracle:
                        case DatabaseType.Oracle: cmd = new OracleCommand
                            cmd = new OracleCommand ("",(OracleConnection)Conn);
                                ("",(OracleConnection)Conn); break;
                            break; default:
                        default: cmd = new SqlCommand
                            cmd = new SqlCommand ("",(SqlConnection)Conn);
                                ("",(SqlConnection)Conn);  break;
                            break; }
                    } }
                } else
                else
 
                 {
{ switch(DBType)
                    switch(DBType)
 
                     {
{ case DatabaseType.Access:
                        case DatabaseType.Access: cmd = new OleDbCommand
                            cmd = new OleDbCommand ("",(OleDbConnection)Conn,(OleDbTransaction)this.TempTransaction);
                                ("",(OleDbConnection)Conn,(OleDbTransaction)this.TempTransaction); break;
                            break;
 case DatabaseType.SQLServer:
                        case DatabaseType.SQLServer: cmd = new SqlCommand
                            cmd = new SqlCommand ("",(SqlConnection)Conn,(SqlTransaction)this.TempTransaction);
                                ("",(SqlConnection)Conn,(SqlTransaction)this.TempTransaction);  break;
                            break;
 case DatabaseType.Oracle:
                        case DatabaseType.Oracle: cmd = new OracleCommand
                            cmd = new OracleCommand ("",(OracleConnection)Conn,(OracleTransaction)this.TempTransaction);
                                ("",(OracleConnection)Conn,(OracleTransaction)this.TempTransaction); break;
                            break; default:
                        default: cmd = new SqlCommand
                            cmd = new SqlCommand ("",(SqlConnection)Conn,(SqlTransaction)this.TempTransaction);
                                ("",(SqlConnection)Conn,(SqlTransaction)this.TempTransaction);  break;
                            break; }
                    } }
                } return cmd;
                return cmd; }
            } }
        }
 private IDbTransaction _Transaction;
        private IDbTransaction _Transaction;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到或设置一个事务。
        /// 得到或设置一个事务。 /// </summary>
        /// </summary> protected IDbTransaction Transaction
        protected IDbTransaction Transaction
 
         {
{ get
            get
 
             {
{ return this._Transaction;
                return this._Transaction; }
            } set
            set
 
             {
{ this._Transaction = value;
                this._Transaction = value; }
            } }
        }
 private IDbTransaction _TempTransaction;
        private IDbTransaction _TempTransaction;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到或设置一个临时事务。
        /// 得到或设置一个临时事务。 /// (用于交互式方法ExcuteCmdListCooperation)。
        /// (用于交互式方法ExcuteCmdListCooperation)。 /// </summary>
        /// </summary> protected IDbTransaction TempTransaction
        protected IDbTransaction TempTransaction
 
         {
{ get
            get
 
             {
{ return this._TempTransaction;
                return this._TempTransaction; }
            } set
            set
 
             {
{ this._TempTransaction = value;
                this._TempTransaction = value; }
            } }
        }
 private bool _IsCooperation;
        private bool _IsCooperation;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到或设置是否交互式方法。
        /// 得到或设置是否交互式方法。 /// (用于交互式方法ExcuteCmdListCooperation)。
        /// (用于交互式方法ExcuteCmdListCooperation)。 /// </summary>
        /// </summary> private bool IsCooperation
        private bool IsCooperation
 
         {
{ get
            get
 
             {
{ return this._IsCooperation;
                return this._IsCooperation; }
            } set
            set
 
             {
{ this._IsCooperation = value;
                this._IsCooperation = value; }
            } }
        }
 #endregion Properties
        #endregion Properties

 FunctionsFunctions#region Functions
        FunctionsFunctions#region Functions

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 从数据库中向数据表对象填充数据。
        /// 从数据库中向数据表对象填充数据。 /// </summary>
        /// </summary> /// <param name="dsRet">要填充数据的数据表类。</param>
        /// <param name="dsRet">要填充数据的数据表类。</param> /// <param name="sql">Sql语句</param>
        /// <param name="sql">Sql语句</param> protected void    InitDataSetTableBySQL(ref DataTable dsRet, string sql)
        protected void    InitDataSetTableBySQL(ref DataTable dsRet, string sql)
 
         {
{         IDbCommand cmd    = this.InstanceComm;
            IDbCommand cmd    = this.InstanceComm; cmd.CommandText = sql;
            cmd.CommandText = sql; this.InitDataSetTableByCmd(ref dsRet,cmd);
            this.InitDataSetTableByCmd(ref dsRet,cmd); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 从数据库中向数据表对象填充数据。
        /// 从数据库中向数据表对象填充数据。 /// </summary>
        /// </summary> /// <param name="dsRet">要填充数据的数据表类。</param>
        /// <param name="dsRet">要填充数据的数据表类。</param> /// <param name="sql">Sql语句</param>
        /// <param name="sql">Sql语句</param> protected void    InitDataSetTableByCmd(ref DataTable dsRet, IDbCommand cmd)
        protected void    InitDataSetTableByCmd(ref DataTable dsRet, IDbCommand cmd)
 
         {
{         IDbDataAdapter myAdapter        = this.InstanceAdap;
            IDbDataAdapter myAdapter        = this.InstanceAdap; string tableName                = dsRet.TableName;
            string tableName                = dsRet.TableName; myAdapter.MissingSchemaAction    = System.Data.MissingSchemaAction.Add;
            myAdapter.MissingSchemaAction    = System.Data.MissingSchemaAction.Add; myAdapter.TableMappings.Add("Table" ,tableName);
            myAdapter.TableMappings.Add("Table" ,tableName); myAdapter.SelectCommand            = cmd;
            myAdapter.SelectCommand            = cmd; if(dsRet.DataSet == null)
            if(dsRet.DataSet == null)
 
             {
{ DataSet dtsTemp                    = new DataSet();
                DataSet dtsTemp                    = new DataSet(); dtsTemp.Tables.Add(dsRet);
                dtsTemp.Tables.Add(dsRet); }
            } if(this.IsCooperation)
            if(this.IsCooperation)
 
             {
{ myAdapter.SelectCommand.Connection        = this.TempConn;
                myAdapter.SelectCommand.Connection        = this.TempConn; myAdapter.SelectCommand.Transaction        = this.TempTransaction;
                myAdapter.SelectCommand.Transaction        = this.TempTransaction; }
            }
 myAdapter.Fill(dsRet.DataSet);
            myAdapter.Fill(dsRet.DataSet); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 执行Command List。
        /// 执行Command List。 /// 如果之前调用过BeginCooperation方法,则所有Command都在一个事务中。
        /// 如果之前调用过BeginCooperation方法,则所有Command都在一个事务中。 /// </summary>
        /// </summary> /// <param name="aryIDbCommand"></param>
        /// <param name="aryIDbCommand"></param> protected void ExcuteCmdList(IDbCommand[] aryIDbCommand)
        protected void ExcuteCmdList(IDbCommand[] aryIDbCommand)
 
         {
{     if(this.IsCooperation)
            if(this.IsCooperation) this.ExcuteCmdListCooperation(aryIDbCommand);
                this.ExcuteCmdListCooperation(aryIDbCommand); else
            else this.ExcuteCmdListNoCooperation(aryIDbCommand);
                this.ExcuteCmdListNoCooperation(aryIDbCommand); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 执行Command List。所有Command都在一个事务中。
        /// 执行Command List。所有Command都在一个事务中。 /// </summary>
        /// </summary> /// <param name="aryIDbCommand"></param>
        /// <param name="aryIDbCommand"></param> protected void ExcuteCmdListCooperation(IDbCommand[] aryIDbCommand)
        protected void ExcuteCmdListCooperation(IDbCommand[] aryIDbCommand)
 
         {
{     if(aryIDbCommand == null || aryIDbCommand.Length ==0)
            if(aryIDbCommand == null || aryIDbCommand.Length ==0)
 
             {
{ return;
                return; }
            } //open connection.
            //open connection. IDbConnection conn    = this.TempConn;
            IDbConnection conn    = this.TempConn; //begin transaction.
            //begin transaction. 
             IDbTransaction tran    = this.TempTransaction;
            IDbTransaction tran    = this.TempTransaction; try
            try
 
             {
{ //excute commands.
                //excute commands. foreach(IDbCommand anyIDbCommand in aryIDbCommand)
                foreach(IDbCommand anyIDbCommand in aryIDbCommand)
 
                 {
{ anyIDbCommand.Connection    = conn;
                    anyIDbCommand.Connection    = conn; anyIDbCommand.Transaction    = tran;
                    anyIDbCommand.Transaction    = tran; anyIDbCommand.ExecuteNonQuery();
                    anyIDbCommand.ExecuteNonQuery(); }
                } }
            } catch(Exception ex)
            catch(Exception ex)
 
             {
{ throw ex;
                throw ex; }
            } }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 执行Command List。没有事务。
        /// 执行Command List。没有事务。 /// </summary>
        /// </summary> /// <param name="aryIDbCommand"></param>
        /// <param name="aryIDbCommand"></param> protected void ExcuteCmdListNoCooperation (IDbCommand[] aryIDbCommand)
        protected void ExcuteCmdListNoCooperation (IDbCommand[] aryIDbCommand)
 
         {
{     if(aryIDbCommand == null || aryIDbCommand.Length ==0)
            if(aryIDbCommand == null || aryIDbCommand.Length ==0)
 
             {
{ return;
                return; }
            } //excute commands.
            //excute commands. foreach(IDbCommand anyIDbCommand in aryIDbCommand)
            foreach(IDbCommand anyIDbCommand in aryIDbCommand)
 
             {
{ anyIDbCommand.Connection.Open();
                anyIDbCommand.Connection.Open(); try
                try
 
                 {
{ //执行
                    //执行 anyIDbCommand.ExecuteNonQuery();
                    anyIDbCommand.ExecuteNonQuery(); }
                } catch(Exception ex)
                catch(Exception ex)
 
                 {
{ throw ex;
                    throw ex; }
                } finally
                finally
 
                 {
{ if(anyIDbCommand.Connection.State == ConnectionState.Open)
                    if(anyIDbCommand.Connection.State == ConnectionState.Open)
 
                     {
{ anyIDbCommand.Connection.Close();
                        anyIDbCommand.Connection.Close(); }
                    }
 }
                }
 }
            } 
             }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 开始事务。
        /// 开始事务。 /// </summary>
        /// </summary> /// <param name="aryDBAccess"></param>
        /// <param name="aryDBAccess"></param> public static void BeginCooperation(DBAccess[] aryDBAccess)
        public static void BeginCooperation(DBAccess[] aryDBAccess)
 
         {
{ IDbConnection conn        = aryDBAccess[0].Conn;
            IDbConnection conn        = aryDBAccess[0].Conn; conn.Open();
            conn.Open(); //begin transaction.
            //begin transaction. IDbTransaction tran        = conn.BeginTransaction();
            IDbTransaction tran        = conn.BeginTransaction(); //set the same connection and transaction for every DBAccess instance.
            //set the same connection and transaction for every DBAccess instance. foreach(DBAccess anyDBAccess in aryDBAccess)
            foreach(DBAccess anyDBAccess in aryDBAccess)
 
             {
{ anyDBAccess.TempConn        = conn;
                anyDBAccess.TempConn        = conn; anyDBAccess.TempTransaction = tran;
                anyDBAccess.TempTransaction = tran; anyDBAccess.IsCooperation    = true;
                anyDBAccess.IsCooperation    = true; }
            } 
             }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 提交事务。
        /// 提交事务。 /// </summary>
        /// </summary> public static void CommitCooperation(DBAccess[] aryDBAccess)
        public static void CommitCooperation(DBAccess[] aryDBAccess)
 
         {
{ foreach(DBAccess anyDBAccess in aryDBAccess)
            foreach(DBAccess anyDBAccess in aryDBAccess)
 
             {
{ anyDBAccess.IsCooperation = false;
                anyDBAccess.IsCooperation = false; }
            } aryDBAccess[0].TempTransaction.Commit();
            aryDBAccess[0].TempTransaction.Commit(); aryDBAccess[0].TempConn.Close();
            aryDBAccess[0].TempConn.Close(); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 回滚事务。
        /// 回滚事务。 /// </summary>
        /// </summary> public static void RollbackCooperation(DBAccess[] aryDBAccess)
        public static void RollbackCooperation(DBAccess[] aryDBAccess)
 
         {
{ foreach(DBAccess anyDBAccess in aryDBAccess)
            foreach(DBAccess anyDBAccess in aryDBAccess)
 
             {
{ anyDBAccess.IsCooperation = false;
                anyDBAccess.IsCooperation = false; }
            } aryDBAccess[0].TempTransaction.Rollback();
            aryDBAccess[0].TempTransaction.Rollback(); aryDBAccess[0].TempConn.Close();
            aryDBAccess[0].TempConn.Close(); }
        } 
         #endregion Functions
        #endregion Functions

 Generate Command FuncionsGenerate Command Funcions#region Generate Command Funcions
        Generate Command FuncionsGenerate Command Funcions#region Generate Command Funcions

 Get Insert CommandGet Insert Command#region Get Insert Command
        Get Insert CommandGet Insert Command#region Get Insert Command
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。 /// </summary>
        /// </summary> /// <param name="aTable">插入数据库的数据。</param>
        /// <param name="aTable">插入数据库的数据。</param> protected  IDbCommand[] GetInsertCommand (DataTable aTable)
        protected  IDbCommand[] GetInsertCommand (DataTable aTable)
 
         {
{ DataColumn[] InsertColumn = new DataColumn[aTable.Columns.Count];
            DataColumn[] InsertColumn = new DataColumn[aTable.Columns.Count]; aTable.Columns.CopyTo(InsertColumn,0);
            aTable.Columns.CopyTo(InsertColumn,0); return GetInsertCommand(aTable,InsertColumn);
            return GetInsertCommand(aTable,InsertColumn); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。 /// </summary>
        /// </summary> /// <param name="InsertRow">插入数据库的数据。</param>
        /// <param name="InsertRow">插入数据库的数据。</param> /// <param name="InsertColumn">插入数据库的字段。</param>
        /// <param name="InsertColumn">插入数据库的字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetInsertCommand (DataTable aTable,DataColumn[] InsertColumn)
        protected IDbCommand[] GetInsertCommand (DataTable aTable,DataColumn[] InsertColumn)
 
         {
{     DataRow[] InsertRow = this.GetRow(aTable);
            DataRow[] InsertRow = this.GetRow(aTable);
 return  this.GetInsertCommand(aTable.TableName,InsertRow,InsertColumn);
            return  this.GetInsertCommand(aTable.TableName,InsertRow,InsertColumn); }
        } 
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。 /// </summary>
        /// </summary> /// <param name="aTable">插入数据库的数据。</param>
        /// <param name="aTable">插入数据库的数据。</param> /// <param name="colName">插入数据库的字段。</param>
        /// <param name="colName">插入数据库的字段。</param> /// <returns></returns>
        /// <returns></returns> protected  IDbCommand[] GetInsertCommand (DataTable aTable,string[] colName)
        protected  IDbCommand[] GetInsertCommand (DataTable aTable,string[] colName)
 
         {
{ DataColumn[] dcCol = this.GetColumnByStr(aTable,colName);
            DataColumn[] dcCol = this.GetColumnByStr(aTable,colName);             return GetInsertCommand(aTable,dcCol);
            return GetInsertCommand(aTable,dcCol); }
        }

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。 /// </summary>
        /// </summary> /// <param name="InsertRow">插入数据库的数据。</param>
        /// <param name="InsertRow">插入数据库的数据。</param> /// <param name="colName">插入数据库的字段。</param>
        /// <param name="colName">插入数据库的字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand GetInsertCommand (DataRow InsertRow,string[] colName)
        protected IDbCommand GetInsertCommand (DataRow InsertRow,string[] colName)
 
         {
{ if ( InsertRow == null  )
            if ( InsertRow == null  ) return null;
                return null; DataColumn[] dcCol = this.GetColumnByStr(InsertRow.Table,colName);
            DataColumn[] dcCol = this.GetColumnByStr(InsertRow.Table,colName); IDbCommand[] cmdList = this.GetInsertCommand(InsertRow.Table.TableName,
            IDbCommand[] cmdList = this.GetInsertCommand(InsertRow.Table.TableName,
 new DataRow[]
                new DataRow[] {InsertRow},
{InsertRow}, dcCol);
                dcCol); if ( cmdList.Length > 0)
            if ( cmdList.Length > 0) return cmdList[0];
                return cmdList[0]; else
            else return null;
                return null; }
        }
 
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。         /// </summary>
        /// </summary> /// <param name="InsertRow">插入数据库的数据。</param>
        /// <param name="InsertRow">插入数据库的数据。</param> /// <param name="colName">插入数据库的字段。</param>
        /// <param name="colName">插入数据库的字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetInsertCommand (string TableName,DataRow[] InsertRow,string[] colName)
        protected IDbCommand[] GetInsertCommand (string TableName,DataRow[] InsertRow,string[] colName)
 
         {
{ if ( InsertRow == null || InsertRow.Length <= 0 )
            if ( InsertRow == null || InsertRow.Length <= 0 ) return null;
                return null; DataColumn[] dcCol = this.GetColumnByStr(InsertRow[0].Table,colName);
            DataColumn[] dcCol = this.GetColumnByStr(InsertRow[0].Table,colName); return this.GetInsertCommand(TableName,InsertRow,dcCol);
            return this.GetInsertCommand(TableName,InsertRow,dcCol); }
        } 
             
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成InsertCommand。
        /// 生成InsertCommand。 /// </summary>
        /// </summary> /// <param name="InsertRow">插入数据库的数据。</param>
        /// <param name="InsertRow">插入数据库的数据。</param> /// <param name="InsertColumn">插入数据库的字段。</param>
        /// <param name="InsertColumn">插入数据库的字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetInsertCommand (string TableName,DataRow[] InsertRow,DataColumn[] InsertColumn)
        protected IDbCommand[] GetInsertCommand (string TableName,DataRow[] InsertRow,DataColumn[] InsertColumn)
 
         {
{ IDbCommand[] cmdList  = new IDbCommand[InsertRow.Length];
            IDbCommand[] cmdList  = new IDbCommand[InsertRow.Length]; IDbDataParameter [] ParaArray = new IDbDataParameter[InsertColumn.Length ];
            IDbDataParameter [] ParaArray = new IDbDataParameter[InsertColumn.Length ]; if ( InsertColumn.Length <=0  || InsertRow.Length <= 0)
            if ( InsertColumn.Length <=0  || InsertRow.Length <= 0) return cmdList;
                return cmdList; string strCol = "";
            string strCol = ""; string strValue = "";
            string strValue = ""; for(int i=0;i< InsertColumn.Length  ;i++)
            for(int i=0;i< InsertColumn.Length  ;i++)
 
             {
{ DataColumn dc = InsertColumn[i];
                DataColumn dc = InsertColumn[i]; //Generate Sql ParaMeter
                //Generate Sql ParaMeter ParaArray[i] = this.GetParameter(dc);
                ParaArray[i] = this.GetParameter(dc); 
                 //Generate column
                //Generate column strCol += "," + dc.ColumnName ;
                strCol += "," + dc.ColumnName ; strValue += "," + ParaArray[i].ParameterName ;
                strValue += "," + ParaArray[i].ParameterName ; }
            } if ( strCol.Trim() != "" )
            if ( strCol.Trim() != "" ) strCol = " ( " + strCol.Remove(0,1) + " )";
                strCol = " ( " + strCol.Remove(0,1) + " )"; if ( strValue.Trim() != "")
            if ( strValue.Trim() != "") strValue = " values ( " + strValue.Remove(0,1) + " )";
                strValue = " values ( " + strValue.Remove(0,1) + " )"; //Generate sql command
            //Generate sql command string strSql =  " INSERT INTO " + TableName + strCol + strValue;
            string strSql =  " INSERT INTO " + TableName + strCol + strValue; //Add para to sql Command
            //Add para to sql Command for(int i = 0 ;i< InsertRow.Length ; i++)
            for(int i = 0 ;i< InsertRow.Length ; i++)
 
             {
{ cmdList[i]                    = this.InstanceComm;
                cmdList[i]                    = this.InstanceComm;     cmdList[i].CommandText        = strSql;
                cmdList[i].CommandText        = strSql; foreach( IDbDataParameter para in ParaArray)
                foreach( IDbDataParameter para in ParaArray)
 
                 {
{ para.Value = InsertRow[i][para.SourceColumn];
                    para.Value = InsertRow[i][para.SourceColumn]; IDbDataParameter tempPara = cmdList[i].CreateParameter();
                    IDbDataParameter tempPara = cmdList[i].CreateParameter(); this.ClonePara(para,tempPara);
                    this.ClonePara(para,tempPara); cmdList[i].Parameters.Add(tempPara);
                    cmdList[i].Parameters.Add(tempPara); }
                } if(this.dbInfoData.IsSqlText)
                if(this.dbInfoData.IsSqlText)
 
                 {
{ cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]);
                    cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]); }
                } }
            } return     cmdList;
            return     cmdList; }
        } #endregion
        #endregion 

 Get Update CommandGet Update Command#region Get Update Command
        Get Update CommandGet Update Command#region Get Update Command
 /**//**//**//// <summary>
        /**//**//**//// <summary>     /// 生成更新Command。
        /// 生成更新Command。 /// 根据数据表的PrimaryKey,和UpdateColName生成Command。
        /// 根据数据表的PrimaryKey,和UpdateColName生成Command。 /// </summary>
        /// </summary> /// <param name="updateTable">需要更新的数据。</param>
        /// <param name="updateTable">需要更新的数据。</param> /// <param name="updateColName">需要更新的字段。</param>
        /// <param name="updateColName">需要更新的字段。</param> /// <returns></returns>
        /// <returns></returns> protected  IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName)
        protected  IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName)
 
         {
{     DataColumn[] PKCol        = updateTable.PrimaryKey;
            DataColumn[] PKCol        = updateTable.PrimaryKey;         string[] PKColName        = new string[PKCol.Length];
            string[] PKColName        = new string[PKCol.Length]; for(int iIndex = 0;iIndex < PKColName.Length;iIndex ++)
            for(int iIndex = 0;iIndex < PKColName.Length;iIndex ++)
 
             {
{ PKColName[iIndex]    = PKCol[iIndex].ColumnName;
                PKColName[iIndex]    = PKCol[iIndex].ColumnName; }
            }
 return  this.GetUpdateCommand(updateTable,UpdateColName,PKColName);
            return  this.GetUpdateCommand(updateTable,UpdateColName,PKColName); }
        }     
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成更新Command。
        /// 生成更新Command。 /// 根据指定的PKColName字段,和UpdateCol生成Command。
        /// 根据指定的PKColName字段,和UpdateCol生成Command。 /// </summary>
        /// </summary> /// <param name="updateTable">需要更新的数据。</param>
        /// <param name="updateTable">需要更新的数据。</param> /// <param name="UpdateColName">需要更新的字段.</param>
        /// <param name="UpdateColName">需要更新的字段.</param> /// <param name="PKColName">更新条件字段。</param>
        /// <param name="PKColName">更新条件字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName,string[]PKColName)
        protected IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName,string[]PKColName)
 
         {
{ DataColumn[] PkCol                = this.GetColumnByStr(updateTable,PKColName);
            DataColumn[] PkCol                = this.GetColumnByStr(updateTable,PKColName); 
             //Generate Sql where.
            //Generate Sql where. IDbDataParameter [] ParaArray    = new IDbDataParameter[PkCol.Length];
            IDbDataParameter [] ParaArray    = new IDbDataParameter[PkCol.Length]; string strWhere = "";
            string strWhere = "";             for(int i = 0; i< PkCol.Length ;i++)
            for(int i = 0; i< PkCol.Length ;i++)
 
             {
{ DataColumn dc = PkCol[i];
                DataColumn dc = PkCol[i];
 //Generate Sql ParaMeter
                //Generate Sql ParaMeter ParaArray[i] = this.GetParameter(dc);
                ParaArray[i] = this.GetParameter(dc);
 strWhere += " AND " + dc.ColumnName + " = " + ParaArray[i].ParameterName;
                strWhere += " AND " + dc.ColumnName + " = " + ParaArray[i].ParameterName; }
            } if ( strWhere.Trim() != "" )
            if ( strWhere.Trim() != "" ) strWhere = " Where " + strWhere.Remove(0,4);
                strWhere = " Where " + strWhere.Remove(0,4); //Generate
            //Generate DataRow[] UpdateRow     = this.GetRow(updateTable);
            DataRow[] UpdateRow     = this.GetRow(updateTable); return this.GetUpdateCommand(updateTable.TableName,UpdateRow,UpdateColName,strWhere);
            return this.GetUpdateCommand(updateTable.TableName,UpdateRow,UpdateColName,strWhere); }
        } 
     
        
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成更新Command。
        /// 生成更新Command。 /// 根据要更新的数据,字段和更新条件生成Command。
        /// 根据要更新的数据,字段和更新条件生成Command。 /// </summary>
        /// </summary> /// <param name="updateTable">需要更新的数据。</param>
        /// <param name="updateTable">需要更新的数据。</param> /// <param name="UpdateColName">需要更新的字段。</param>
        /// <param name="UpdateColName">需要更新的字段。</param> /// <param name="strWhere">更新条件。</param>
        /// <param name="strWhere">更新条件。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName,string strWhere)
        protected IDbCommand[] GetUpdateCommand (DataTable updateTable,string[] UpdateColName,string strWhere)
 
         {
{ DataRow[] UpdateRow     = this.GetRow(updateTable);
            DataRow[] UpdateRow     = this.GetRow(updateTable); return  this.GetUpdateCommand(updateTable.TableName,UpdateRow,UpdateColName,strWhere);
            return  this.GetUpdateCommand(updateTable.TableName,UpdateRow,UpdateColName,strWhere); }
        }
 
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成更新Command。
        /// 生成更新Command。 /// 根据要更新的数据,字段和更新条件生成Command。
        /// 根据要更新的数据,字段和更新条件生成Command。 /// </summary>
        /// </summary> /// <param name="tableName">要更新的数据表名。</param>
        /// <param name="tableName">要更新的数据表名。</param> /// <param name="UpdateRow">要更新的数据。</param>
        /// <param name="UpdateRow">要更新的数据。</param> /// <param name="UpDataColumn">要更新的数据表字段名。</param>
        /// <param name="UpDataColumn">要更新的数据表字段名。</param> /// <param name="strWhere">Where语句。(例如 where leng(@Nam}>4 or Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param>
        /// <param name="strWhere">Where语句。(例如 where leng(@Nam}>4 or Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetUpdateCommand (string tableName,DataRow[] UpdateRow,string[] UpdateColName,string strWhere)
        protected IDbCommand[] GetUpdateCommand (string tableName,DataRow[] UpdateRow,string[] UpdateColName,string strWhere)
 
         {
{     DataColumn[] UpDataColumn            = this.GetColumnByStr(UpdateRow[0].Table,UpdateColName);
            DataColumn[] UpDataColumn            = this.GetColumnByStr(UpdateRow[0].Table,UpdateColName);
 IDbCommand[] cmdList  = new IDbCommand[UpdateRow.Length];
            IDbCommand[] cmdList  = new IDbCommand[UpdateRow.Length]; if ( UpdateRow.Length <= 0)
            if ( UpdateRow.Length <= 0) return cmdList;
                return cmdList; 
             IDbDataParameter [] ParaArray    = new IDbDataParameter[UpDataColumn.Length];
            IDbDataParameter [] ParaArray    = new IDbDataParameter[UpDataColumn.Length];
 string strUpdateSet = "";
            string strUpdateSet = "";             for(int i = 0; i< UpDataColumn.Length ;i++)
            for(int i = 0; i< UpDataColumn.Length ;i++)
 
             {
{ DataColumn dc = UpDataColumn[i];
                DataColumn dc = UpDataColumn[i]; //Generate Sql ParaMeter
                //Generate Sql ParaMeter ParaArray[i] = this.GetParameter(dc);
                ParaArray[i] = this.GetParameter(dc);                 strUpdateSet += " , " + dc.ColumnName + " = " + ParaArray[i].ParameterName;
                strUpdateSet += " , " + dc.ColumnName + " = " + ParaArray[i].ParameterName; }
            } if ( strUpdateSet.Trim() != "" )
            if ( strUpdateSet.Trim() != "" ) strUpdateSet = " Set " + strUpdateSet.Remove(0,3);
                strUpdateSet = " Set " + strUpdateSet.Remove(0,3); //Generate sql command
            //Generate sql command string strSql =  " Update " + tableName + strUpdateSet + strWhere;
            string strSql =  " Update " + tableName + strUpdateSet + strWhere; //Add para to sql Command
            //Add para to sql Command for(int i = 0 ;i< UpdateRow.Length ;i ++)
            for(int i = 0 ;i< UpdateRow.Length ;i ++)
 
             {
{ cmdList[i]                    = this.InstanceComm;
                cmdList[i]                    = this.InstanceComm;     cmdList[i].CommandText        = strSql;
                cmdList[i].CommandText        = strSql;     foreach( IDbDataParameter para in ParaArray)
                foreach( IDbDataParameter para in ParaArray)
 
                 {
{ para.Value = UpdateRow[i][para.SourceColumn];
                    para.Value = UpdateRow[i][para.SourceColumn]; IDbDataParameter tempPara = cmdList[i].CreateParameter();
                    IDbDataParameter tempPara = cmdList[i].CreateParameter(); this.ClonePara(para,tempPara);
                    this.ClonePara(para,tempPara); cmdList[i].Parameters.Add(tempPara);
                    cmdList[i].Parameters.Add(tempPara); }
                } if(this.dbInfoData.IsSqlText)
                if(this.dbInfoData.IsSqlText)
 
                 {
{ cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]);
                    cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]); }
                } }
            } return     cmdList;
            return     cmdList; }
        }
 #endregion Get Update Command
        #endregion Get Update Command

 Get Select CommandGet Select Command#region Get Select Command
        Get Select CommandGet Select Command#region Get Select Command

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成SelectCommand。
        /// 生成SelectCommand。 /// </summary>
        /// </summary> /// <param name="data">读取数据条件数据。</param>
        /// <param name="data">读取数据条件数据。</param> /// <param name="CheckCol">要读取数据表的字段名</param>
        /// <param name="CheckCol">要读取数据表的字段名</param> /// <param name="PkCol">读取数据条件字段</param>
        /// <param name="PkCol">读取数据条件字段</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand GetSelectCommand(DataTable data,string[] CheckCol,string[] PkCol)
        protected IDbCommand GetSelectCommand(DataTable data,string[] CheckCol,string[] PkCol)
 
         {
{ return this.GetSelectCommand(data.TableName,data.Select(),CheckCol,PkCol);
            return this.GetSelectCommand(data.TableName,data.Select(),CheckCol,PkCol); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成SelectCommand。
        /// 生成SelectCommand。 /// </summary>
        /// </summary> /// <param name="tableName">读取数据的数据表名。</param>
        /// <param name="tableName">读取数据的数据表名。</param> /// <param name="rowList">读取数据条件数据。</param>
        /// <param name="rowList">读取数据条件数据。</param> /// <param name="CheckCol">要读取数据表的字段名。</param>
        /// <param name="CheckCol">要读取数据表的字段名。</param> /// <param name="PkCol">读取数据条件字段。</param>
        /// <param name="PkCol">读取数据条件字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand GetSelectCommand(string tableName,DataRow[] rowList,string[] CheckCol,string[] PkCol)
        protected IDbCommand GetSelectCommand(string tableName,DataRow[] rowList,string[] CheckCol,string[] PkCol)
 
         {
{ IDbCommand cmdRet        = this.InstanceComm;
            IDbCommand cmdRet        = this.InstanceComm;     cmdRet.CommandText        = "";
            cmdRet.CommandText        = "";     if ( rowList.Length <= 0 )
            if ( rowList.Length <= 0 ) return cmdRet;
                return cmdRet;
 string strCol = "";
            string strCol = ""; for ( int i = 0 ; i < PkCol.Length ; i++)
            for ( int i = 0 ; i < PkCol.Length ; i++) strCol += "," + PkCol[i] ;
                strCol += "," + PkCol[i] ; for ( int i = 0 ; i < CheckCol.Length ; i++)
            for ( int i = 0 ; i < CheckCol.Length ; i++) strCol += "," + CheckCol[i] ;
                strCol += "," + CheckCol[i] ; if ( strCol.Length > 0)
            if ( strCol.Length > 0) strCol = strCol.Remove(0,1);
                strCol = strCol.Remove(0,1); 
             //Generate Sql ParaMeter
            //Generate Sql ParaMeter IDbDataParameter [] ParaArray = new IDbDataParameter[PkCol.Length];
            IDbDataParameter [] ParaArray = new IDbDataParameter[PkCol.Length];         for(int i = 0; i< ParaArray.Length ;i++)
            for(int i = 0; i< ParaArray.Length ;i++)
 
             {
{ DataColumn dc = rowList[0].Table.Columns[PkCol[i]];
                DataColumn dc = rowList[0].Table.Columns[PkCol[i]]; ParaArray[i] = this.GetParameter(dc);
                ParaArray[i] = this.GetParameter(dc);     }
            }
 string strSQL = "";
            string strSQL = "";                 for(int i=0 ;i< rowList.Length ;i++)
            for(int i=0 ;i< rowList.Length ;i++)
 
             {
{ strSQL = "union all select " + strCol + " from " + tableName  ;
                strSQL = "union all select " + strCol + " from " + tableName  ; string strWhere = "";
                string strWhere = ""; DataRow aRow =    rowList[i];
                DataRow aRow =    rowList[i];     foreach( IDbDataParameter para in ParaArray)
                foreach( IDbDataParameter para in ParaArray)
 
                 {
{ para.Value = aRow[para.SourceColumn];
                    para.Value = aRow[para.SourceColumn]; IDbDataParameter tempPara = cmdRet.CreateParameter();
                    IDbDataParameter tempPara = cmdRet.CreateParameter(); this.ClonePara(para,tempPara);
                    this.ClonePara(para,tempPara);     tempPara.ParameterName = tempPara.ParameterName + i.ToString();
                    tempPara.ParameterName = tempPara.ParameterName + i.ToString(); cmdRet.Parameters.Add(tempPara);
                    cmdRet.Parameters.Add(tempPara); strWhere += " AND " + tempPara.SourceColumn  + " =" + tempPara.ParameterName;
                    strWhere += " AND " + tempPara.SourceColumn  + " =" + tempPara.ParameterName; }
                }                 if ( strWhere.Trim().Length > 0)
                if ( strWhere.Trim().Length > 0) strWhere = " Where " + strWhere.Remove(0,4);
                    strWhere = " Where " + strWhere.Remove(0,4); strSQL += strWhere;
                strSQL += strWhere; }
            } if ( strSQL.Trim().Length > 0)
            if ( strSQL.Trim().Length > 0) strSQL = strSQL.Remove(0,9);
                strSQL = strSQL.Remove(0,9); cmdRet.CommandText = strSQL;
            cmdRet.CommandText = strSQL; if(this.dbInfoData.IsSqlText)
            if(this.dbInfoData.IsSqlText)
 
             {
{ cmdRet.CommandText    = this.GetSQLByCommand(cmdRet);
                cmdRet.CommandText    = this.GetSQLByCommand(cmdRet); }
            } return cmdRet;
            return cmdRet; }
        } #endregion
        #endregion

 Get Delete CommandGet Delete Command#region Get Delete Command
        Get Delete CommandGet Delete Command#region Get Delete Command

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成DeleteCommand。
        /// 生成DeleteCommand。 /// </summary>
        /// </summary> /// <param name="deleteTable">条件数据.</param>
        /// <param name="deleteTable">条件数据.</param> /// <param name="strWhere">Where语句。(例如 len(@Name}>4 or @Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param>
        /// <param name="strWhere">Where语句。(例如 len(@Name}>4 or @Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param> /// <param name="PKColumn">条件字段。</param>
        /// <param name="PKColumn">条件字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetDeleteCommand (DataTable deleteTable ,string strWhere,string[] PKColumn)
        protected IDbCommand[] GetDeleteCommand (DataTable deleteTable ,string strWhere,string[] PKColumn)
 
         {
{     DataColumn[] dcCol = this.GetColumnByStr(deleteTable,PKColumn);
            DataColumn[] dcCol = this.GetColumnByStr(deleteTable,PKColumn);    
 return  this.GetDeleteCommand(deleteTable.Select(),strWhere,dcCol);
            return  this.GetDeleteCommand(deleteTable.Select(),strWhere,dcCol); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成DeleteCommand。
        /// 生成DeleteCommand。 /// </summary>
        /// </summary> /// <param name="DeleteRow">条件数据。</param>
        /// <param name="DeleteRow">条件数据。</param> /// <param name="PKColumn">条件字段。</param>
        /// <param name="PKColumn">条件字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetDeleteCommand (DataTable data,string[] PKColumn)
        protected IDbCommand[] GetDeleteCommand (DataTable data,string[] PKColumn)
 
         {
{     DataColumn[] dcCol = this.GetColumnByStr(data,PKColumn);
            DataColumn[] dcCol = this.GetColumnByStr(data,PKColumn);    
 return GetDeleteCommand(data.Select(),dcCol);
            return GetDeleteCommand(data.Select(),dcCol); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成DeleteCommand。
        /// 生成DeleteCommand。 /// </summary>
        /// </summary> /// <param name="DeleteRow">条件数据。</param>
        /// <param name="DeleteRow">条件数据。</param> /// <param name="PKColumn">条件字段。</param>
        /// <param name="PKColumn">条件字段。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetDeleteCommand (DataRow[] DeleteRow,DataColumn[] PKColumn)
        protected IDbCommand[] GetDeleteCommand (DataRow[] DeleteRow,DataColumn[] PKColumn)
 
         {
{     return GetDeleteCommand(DeleteRow,null,PKColumn);
            return GetDeleteCommand(DeleteRow,null,PKColumn); }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 生成DeleteCommand。
        /// 生成DeleteCommand。 /// </summary>
        /// </summary> /// <param name="DeleteRow">条件数据。</param>
        /// <param name="DeleteRow">条件数据。</param> /// <param name="strWhere">Where语句。(例如 where leng(@Nam}>4 or Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param>
        /// <param name="strWhere">Where语句。(例如 where leng(@Nam}>4 or Desc is not null ),字段用{GetParaPreFix+字段名}组成。)</param> /// <param name="intCount">参数个数。</param>
        /// <param name="intCount">参数个数。</param> /// <returns></returns>
        /// <returns></returns> protected IDbCommand[] GetDeleteCommand (DataRow[] DeleteRow,string Where,DataColumn[] PKColumn)
        protected IDbCommand[] GetDeleteCommand (DataRow[] DeleteRow,string Where,DataColumn[] PKColumn)
 
         {
{     //实例化Command和Parameter
            //实例化Command和Parameter IDbCommand[] cmdList  = new IDbCommand[DeleteRow.Length];
            IDbCommand[] cmdList  = new IDbCommand[DeleteRow.Length]; if ( DeleteRow.Length <= 0 )
            if ( DeleteRow.Length <= 0 ) return cmdList;
                return cmdList; IDbDataParameter [] ParaArray = new IDbDataParameter[PKColumn.Length];
            IDbDataParameter [] ParaArray = new IDbDataParameter[PKColumn.Length]; for(int i = 0; i< ParaArray.Length ;i++)
            for(int i = 0; i< ParaArray.Length ;i++)
 
             {
{ DataColumn dc = PKColumn[i];
                DataColumn dc = PKColumn[i];
 //Generate Sql ParaMeter
                //Generate Sql ParaMeter ParaArray[i] = this.GetParameter(dc);
                ParaArray[i] = this.GetParameter(dc);                 }
            }
 //生成Where语句。
            //生成Where语句。 string strWhere = "";
            string strWhere = ""; if(null != Where && Where != "")
            if(null != Where && Where != "")
 
             {
{ for(int i = 0; i< ParaArray.Length ;i++)
                for(int i = 0; i< ParaArray.Length ;i++)
 
                 {
{         strWhere += " AND " + ParaArray[i].SourceColumn + " =" + ParaArray[i].ParameterName ;
                    strWhere += " AND " + ParaArray[i].SourceColumn + " =" + ParaArray[i].ParameterName ; }
                } if ( strWhere.Trim() != "" )
                if ( strWhere.Trim() != "" ) strWhere = " Where " + strWhere.Remove(0,4);
                    strWhere = " Where " + strWhere.Remove(0,4); }
            } else
            else
 
             {
{ strWhere = " Where " + Where;
                strWhere = " Where " + Where; }
            } 
             //Generate sql command
            //Generate sql command string strSql =  " Delete From " + DeleteRow[0].Table.TableName + strWhere;
            string strSql =  " Delete From " + DeleteRow[0].Table.TableName + strWhere; //Add para to sql Command
            //Add para to sql Command for(int i=0 ;i<DeleteRow.Length ;i++)
            for(int i=0 ;i<DeleteRow.Length ;i++)
 
             {
{ DataRow aRow                = DeleteRow[i];
                DataRow aRow                = DeleteRow[i]; cmdList[i]                    = this.InstanceComm;
                cmdList[i]                    = this.InstanceComm;     cmdList[i].CommandText        = strSql;
                cmdList[i].CommandText        = strSql; foreach( IDbDataParameter para in ParaArray)
                foreach( IDbDataParameter para in ParaArray)
 
                 {
{ object oValue = null;
                    object oValue = null; if (aRow.RowState == DataRowState.Deleted)
                    if (aRow.RowState == DataRowState.Deleted) oValue = aRow[para.SourceColumn,DataRowVersion.Original];
                        oValue = aRow[para.SourceColumn,DataRowVersion.Original]; else
                    else oValue = aRow[para.SourceColumn];
                        oValue = aRow[para.SourceColumn]; para.Value = oValue;
                    para.Value = oValue; IDbDataParameter tempPara = cmdList[i].CreateParameter();
                    IDbDataParameter tempPara = cmdList[i].CreateParameter(); this.ClonePara(para,tempPara);
                    this.ClonePara(para,tempPara);                     cmdList[i].Parameters.Add(tempPara);
                    cmdList[i].Parameters.Add(tempPara); }
                } if(this.dbInfoData.IsSqlText)
                if(this.dbInfoData.IsSqlText)
 
                 {
{ cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]);
                    cmdList[i].CommandText    = this.GetSQLByCommand(cmdList[i]); }
                } }
            } return     cmdList;
            return     cmdList; }
        }

 
    
 #endregion Get Delete Command
        #endregion Get Delete Command

 Public FunctionPublic Function#region Public Function
        Public FunctionPublic Function#region Public Function
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到DbDataParameter
        /// 得到DbDataParameter /// </summary>
        /// </summary> /// <param name="pramObj">生成Parameters的参数</param>
        /// <param name="pramObj">生成Parameters的参数</param> /// <returns></returns>
        /// <returns></returns> protected IDbDataParameter[] GetParameter(ParaObject[] pramObj)
        protected IDbDataParameter[] GetParameter(ParaObject[] pramObj)
 
         {
{ IDbDataParameter[] paras = new IDbDataParameter[pramObj.Length];
            IDbDataParameter[] paras = new IDbDataParameter[pramObj.Length];
 for(int iIndex =0;iIndex < paras.Length ; iIndex++)
            for(int iIndex =0;iIndex < paras.Length ; iIndex++)
 
             {
{ paras[iIndex]                = this.InstanceParam;
                paras[iIndex]                = this.InstanceParam; paras[iIndex].DbType        = this.GetDataType(pramObj[iIndex].PaType,0);
                paras[iIndex].DbType        = this.GetDataType(pramObj[iIndex].PaType,0); paras[iIndex].Direction        = pramObj[iIndex].Direct;
                paras[iIndex].Direction        = pramObj[iIndex].Direct; paras[iIndex].Value            = pramObj[iIndex].Value;
                paras[iIndex].Value            = pramObj[iIndex].Value; paras[iIndex].ParameterName    = this.GetParaPreFix+pramObj[iIndex].Name;
                paras[iIndex].ParameterName    = this.GetParaPreFix+pramObj[iIndex].Name; }
            }
 return paras;
            return paras; }
        }

 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 根据数据库类型获取参数接口
        /// 根据数据库类型获取参数接口 /// </summary>
        /// </summary> /// <returns>数据适配器接口</returns>
        /// <returns>数据适配器接口</returns> private IDbDataParameter  GetParameter(DataColumn aColumn)
        private IDbDataParameter  GetParameter(DataColumn aColumn)
 
         {
{ const int MAX_SIZE    = 4000;
            const int MAX_SIZE    = 4000;  
             IDbDataParameter para = this.InstanceParam;
            IDbDataParameter para = this.InstanceParam; 
             
         para.ParameterName = this.GetParaPreFix  + aColumn.ColumnName;
            para.ParameterName = this.GetParaPreFix  + aColumn.ColumnName;     para.SourceColumn = aColumn.ColumnName ;
            para.SourceColumn = aColumn.ColumnName ; para.DbType  = this.GetDataType(aColumn.DataType,aColumn.MaxLength);
            para.DbType  = this.GetDataType(aColumn.DataType,aColumn.MaxLength);     
              if ( para.DbType == DbType.String )
            if ( para.DbType == DbType.String )
 
             {
{ int size  = aColumn.MaxLength ;
                int size  = aColumn.MaxLength ; if ( size <= 0)
                if ( size <= 0) size = MAX_SIZE;
                    size = MAX_SIZE; para.Size = size;
                para.Size = size;                 }
            } return para;
            return para; }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 根据Command拼SQL Text.
        /// 根据Command拼SQL Text. /// </summary>
        /// </summary> /// <param name="comm"></param>
        /// <param name="comm"></param> /// <returns></returns>
        /// <returns></returns> public string GetSQLByCommand(IDbCommand comm)
        public string GetSQLByCommand(IDbCommand comm)
 
         {
{ string strSQL = comm.CommandText;
            string strSQL = comm.CommandText; foreach(IDbDataParameter para in comm.Parameters)
            foreach(IDbDataParameter para in comm.Parameters)
 
             {
{ switch(para.DbType)
                switch(para.DbType)
 
                 {
{ case DbType.Decimal:
                    case DbType.Decimal: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString() );
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString() ); break;
                        break; case DbType.DateTime:
                    case DbType.DateTime: strSQL = strSQL.Replace( para.ParameterName,    "'" + para.Value.ToString() + "'" );
                        strSQL = strSQL.Replace( para.ParameterName,    "'" + para.Value.ToString() + "'" );     break;
                        break; case DbType.Int16:
                    case DbType.Int16: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());         break;
                        break; case DbType.Int32:
                    case DbType.Int32: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());         break;
                        break; case DbType.Int64:
                    case DbType.Int64: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());         break;
                        break; case DbType.Byte:
                    case DbType.Byte: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());     break;
                        break; case DbType.AnsiStringFixedLength:
                    case DbType.AnsiStringFixedLength: strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");
                        strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");     break;
                        break; case DbType.String:
                    case DbType.String: strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");
                        strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");     break;
                        break; case DbType.Binary:
                    case DbType.Binary: strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    para.Value.ToString()); break;
                        break; case DbType.Boolean:
                    case DbType.Boolean: strSQL = strSQL.Replace( para.ParameterName,    Convert.ToInt32(para.Value).ToString());
                        strSQL = strSQL.Replace( para.ParameterName,    Convert.ToInt32(para.Value).ToString()); break;
                        break; default:
                    default: strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");
                        strSQL = strSQL.Replace( para.ParameterName,    "'"+para.Value.ToString()+"'");     break;
                        break; }
                } }
            } return strSQL;
            return strSQL; }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 根据C# 数据类型返回数据库类型。
        /// 根据C# 数据类型返回数据库类型。 /// </summary>
        /// </summary> /// <param name="dataType">C#数据类型。</param>
        /// <param name="dataType">C#数据类型。</param> /// <param name="maxLength">最大长度。</param>
        /// <param name="maxLength">最大长度。</param> /// <returns></returns>
        /// <returns></returns> private DbType GetDataType(System.Type dataType,int maxLength)
        private DbType GetDataType(System.Type dataType,int maxLength)
 
         {
{ DbType typeRet = DbType.String ;
            DbType typeRet = DbType.String ;
 if (dataType == typeof(decimal) )
            if (dataType == typeof(decimal) )
 
             {
{ typeRet =    DbType.Decimal;
                typeRet =    DbType.Decimal;                                     }
            } else if (dataType == typeof(DateTime) )
            else if (dataType == typeof(DateTime) )
 
             {
{ typeRet = DbType.DateTime ;
                typeRet = DbType.DateTime ;     
                     }
            } else if (dataType == typeof(string) )
            else if (dataType == typeof(string) )
 
             {
{ if ( maxLength > 0)
                if ( maxLength > 0) typeRet = DbType.AnsiStringFixedLength ;
                    typeRet = DbType.AnsiStringFixedLength ;     else
                else typeRet = DbType.String ;
                    typeRet = DbType.String ;                 }
            } else if (dataType == typeof(int))
            else if (dataType == typeof(int))
 
             {
{ typeRet = DbType.Int64;
                typeRet = DbType.Int64; }
            } else if( dataType == typeof(bool))
            else if( dataType == typeof(bool))
 
             {
{ typeRet = DbType.Boolean ;
                typeRet = DbType.Boolean ; }
            } if( dataType == typeof(byte[]))
            if( dataType == typeof(byte[]))
 
             {
{ typeRet = DbType.Binary ;
                typeRet = DbType.Binary ; }
            } return typeRet;
            return typeRet; }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 根据数据表和字段名称,得到DataColumn。
        /// 根据数据表和字段名称,得到DataColumn。 /// </summary>
        /// </summary> /// <param name="aTable">数据表。</param>
        /// <param name="aTable">数据表。</param> /// <param name="colName">字段名称。</param>
        /// <param name="colName">字段名称。</param> /// <returns></returns>
        /// <returns></returns> private  DataColumn[] GetColumnByStr(DataTable aTable,string[] colName)
        private  DataColumn[] GetColumnByStr(DataTable aTable,string[] colName)
 
         {
{ DataColumn[] dcCol = new DataColumn[colName.Length];
            DataColumn[] dcCol = new DataColumn[colName.Length]; for( int i = 0 ; i < dcCol.Length  ; i++)
            for( int i = 0 ; i < dcCol.Length  ; i++)
 
             {
{ string columnName = colName[i].Trim();
                string columnName = colName[i].Trim(); int index = aTable.Columns.IndexOf(columnName);
                int index = aTable.Columns.IndexOf(columnName); if ( index >= 0 )
                if ( index >= 0 ) dcCol[i] = aTable.Columns[index];
                    dcCol[i] = aTable.Columns[index]; }
            } return dcCol;
            return dcCol; }
        } 
    
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 根据记录的状态(新增,修改,删除等)来得到相应的数据记录。
        /// 根据记录的状态(新增,修改,删除等)来得到相应的数据记录。 /// </summary>
        /// </summary> /// <param name="aTable">数据表。</param>
        /// <param name="aTable">数据表。</param> /// <param name="rowState">数据状态。</param>
        /// <param name="rowState">数据状态。</param> /// <returns></returns>
        /// <returns></returns> private DataRow[] GetRow(DataTable aTable,DataRowState rowState)
        private DataRow[] GetRow(DataTable aTable,DataRowState rowState)
 
         {
{ DataTable dtChanged = aTable.GetChanges(rowState);
            DataTable dtChanged = aTable.GetChanges(rowState); DataRow[] rowArray = new DataRow[dtChanged.Rows.Count];
            DataRow[] rowArray = new DataRow[dtChanged.Rows.Count]; for( int i = 0 ; i < rowArray.Length ; i++)
            for( int i = 0 ; i < rowArray.Length ; i++)
 
             {
{ rowArray[i] = dtChanged.Rows[i];
                rowArray[i] = dtChanged.Rows[i]; }
            } return rowArray;
            return rowArray; }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 得到数据表中所有记录。
        /// 得到数据表中所有记录。 /// </summary>
        /// </summary> /// <param name="aTable">数据表。</param>
        /// <param name="aTable">数据表。</param> /// <returns></returns>
        /// <returns></returns> private DataRow[] GetRow(DataTable aTable)
        private DataRow[] GetRow(DataTable aTable)
 
         {
{ DataRow[] rowArray = new DataRow[aTable.Rows.Count];
            DataRow[] rowArray = new DataRow[aTable.Rows.Count]; for( int i = 0 ; i < rowArray.Length ; i++)
            for( int i = 0 ; i < rowArray.Length ; i++)
 
             {
{ rowArray[i] = aTable.Rows[i];
                rowArray[i] = aTable.Rows[i]; }
            } return rowArray;
            return rowArray; }
        }
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 获得源参数的克隆参数
        /// 获得源参数的克隆参数 /// </summary>
        /// </summary> /// <param name="paraSource">原始参数</param>
        /// <param name="paraSource">原始参数</param> /// <param name="paraSource">克隆参数<</param>
        /// <param name="paraSource">克隆参数<</param> ///
        ///  private void ClonePara(IDbDataParameter paraSource,IDbDataParameter paraDest)
        private void ClonePara(IDbDataParameter paraSource,IDbDataParameter paraDest)
 
         {
{             paraDest.ParameterName = paraSource.ParameterName ;
            paraDest.ParameterName = paraSource.ParameterName ; paraDest.SourceColumn = paraSource.SourceColumn ;
            paraDest.SourceColumn = paraSource.SourceColumn ; paraDest.DbType  = paraSource.DbType ;
            paraDest.DbType  = paraSource.DbType ; paraDest.Value = paraSource.Value;
            paraDest.Value = paraSource.Value; paraDest.Size = paraSource.Size;
            paraDest.Size = paraSource.Size; }
        } 
     #endregion
        #endregion
 #endregion
        #endregion }
    }
 /**//**//**//// <summary>
    /**//**//**//// <summary> /// 生成Parameters的参数类.
    /// 生成Parameters的参数类. /// </summary>
    /// </summary> public class ParaObject
    public class ParaObject
 
     {
{ 
         public  ParaObject(object Value,ParameterDirection direct,string Name,System.Type PaType)
        public  ParaObject(object Value,ParameterDirection direct,string Name,System.Type PaType)
 
         {
{ this.Value = Value;
            this.Value = Value; this.Direct = direct;
            this.Direct = direct; this.Name = Name;
            this.Name = Name; this.PaType = PaType;
            this.PaType = PaType; }
        }
 private object _Value;
        private object _Value;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 参数值
        /// 参数值 /// </summary>
        /// </summary> public object Value
        public object Value
 
         {
{ get
            get
 
             {
{ return this._Value;
                return this._Value; }
            } set
            set
 
             {
{ this._Value = value;
                this._Value = value; }
            } }
        }
 private ParameterDirection _Direct;
        private ParameterDirection _Direct;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 方向
        /// 方向 /// </summary>
        /// </summary> public ParameterDirection Direct
        public ParameterDirection Direct
 
         {
{ get
            get
 
             {
{ return this._Direct;
                return this._Direct; }
            } set
            set
 
             {
{ this._Direct = value;
                this._Direct = value; }
            } }
        } private string _Name;
        private string _Name;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 参数名.
        /// 参数名. /// </summary>
        /// </summary> public string Name
        public string Name
 
         {
{ get
            get
 
             {
{ return this._Name;
                return this._Name; }
            } set
            set
 
             {
{ this._Name = value;
                this._Name = value; }
            } }
        } 
         private System.Type _PaType;
        private System.Type _PaType;
 /**//**//**//// <summary>
        /**//**//**//// <summary> /// 参数类型.
        /// 参数类型. /// </summary>
        /// </summary> public System.Type PaType
        public System.Type PaType
 
         {
{ get
            get
 
             {
{ return this._PaType;
                return this._PaType; }
            } set
            set
 
             {
{ this._PaType = value;
                this._PaType = value; }
            } }
        }
 }
    }
 }
}
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号