/// <summary>
        /// 执行数据操作,返回受影响的行数。
        /// </summary>
        /// <param name="xmlFileName">SQL 语句所在的Xml 文件名称</param>
        /// <param name="sqlName">SQL 语句定义的名称</param>
        /// <param name="sqlParams">SQL 参数</param>
        /// <returns>返回最后执行语句受影响的行数</returns>
        public int ExecuteNonQueryBySqlParams(Database db, string xmlFileName, string sqlName, List <SqlParamInfo> sqlParams)
        {
            if (_PersistenceManager == null)
            {
                _PersistenceManager = new PersistenceManagerHelper(_CommandTextFormatValues);
            }

            System.Data.Common.DbCommand[] cmds = _PersistenceManager.CreateDbCommandBySqlParams(db,
                                                                                                 xmlFileName, sqlName, sqlParams);

            int re = 0;

            try {
                if (_DatabaseExecte == null)
                {
                    _DatabaseExecte = new DatabaseExecuteHelper();
                }

                re = _DatabaseExecte.ExecuteNonQuery(db, cmds);
            }
            catch (Exception ex) {
                throw new MB.RuleBase.Exceptions.DatabaseExecuteException("执行ExecuteNonQueryBySqlParams 出错!", ex);
            }
            finally {
                foreach (DbCommand td in cmds)
                {
                    td.Dispose();
                }
            }

            return(re);
        }
        /// <summary>
        /// 执行数据操作,返回受影响的行数。
        /// </summary>
        /// <param name="transaction"></param>
        /// <param name="xmlFileName">SQL 语句所在的Xml 文件名称<</param>
        /// <param name="sqlName">SQL 语句定义的名称</param>
        /// <param name="parValues">SQL 参数值</param>
        /// <returns>返回最后执行语句受影响的行数</returns>
        public int ExecuteNonQuery(Database db, DbTransaction transaction, string xmlFileName, string sqlName, params object[] parValues)
        {
            if (_PersistenceManager == null)
            {
                _PersistenceManager = new PersistenceManagerHelper(_CommandTextFormatValues);
            }

            System.Data.Common.DbCommand[] cmds = _PersistenceManager.CreateDbCommandByXml(db,
                                                                                           xmlFileName, sqlName, parValues);

            int re = 0;

            try {
                if (_DatabaseExecte == null)
                {
                    _DatabaseExecte = new DatabaseExecuteHelper();
                }

                re = transaction == null?_DatabaseExecte.ExecuteNonQuery(db, cmds) : _DatabaseExecte.ExecuteNonQuery(db, cmds, transaction);
            }
            catch (Exception ex) {
                throw new MB.RuleBase.Exceptions.DatabaseExecuteException("执行ExecuteNonQuery 出错!", ex);
            }
            finally {
                foreach (DbCommand td in cmds)
                {
                    td.Dispose();
                }
            }

            return(re);
        }
        /// <summary>
        /// 直接通过实体来执行数据库的存储操作。
        /// 特别说明:如果需要根据EntityState 的状态来进行相应的操作请使用ObjectEditHelper
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="transaction">可以为空,为空将使用TransactionScope</param>
        /// <param name="xmFileName"></param>
        /// <param name="sqlName"></param>
        /// <param name="entitys">集合里面只能存在一种操作状态的实体</param>
        /// <returns></returns>
        public int ExecuteNonQueryByEntity <T>(Database db, DbTransaction transaction, string xmFileName, string sqlName, IList <T> entitys)
            where T : MB.Orm.Common.BaseModel
        {
            List <DbCommand> dbCmds = new List <DbCommand>();

            foreach (T et in entitys)
            {
                if (_PersistenceManager == null)
                {
                    _PersistenceManager = new PersistenceManagerHelper(_CommandTextFormatValues);
                }

                var cmds = _PersistenceManager.GetDbCommand(db, et as MB.Orm.Common.BaseModel, xmFileName, sqlName);
                dbCmds.AddRange(cmds);
            }

            int re = 0;

            try {
                if (_DatabaseExecte == null)
                {
                    _DatabaseExecte = new DatabaseExecuteHelper();
                }

                re = transaction == null?_DatabaseExecte.ExecuteNonQuery(db, dbCmds.ToArray()) : _DatabaseExecte.ExecuteNonQuery(db, dbCmds.ToArray(), transaction);
            }
            catch (Exception ex) {
                throw new MB.RuleBase.Exceptions.DatabaseExecuteException("执行ExecuteNonQueryByEntity<T> 出错!", ex);
            }
            finally {
                foreach (DbCommand td in dbCmds)
                {
                    td.Dispose();
                }
            }

            return(re);
        }