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