/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dms"></param> /// <param name="columns"></param> /// <returns></returns> public static int InsertIdentity <T>(this DMS <T> dms, System.Linq.Expressions.Expression <Func <T, T> > columns) where T : class { var result = DMSInsert(dms, DMSExcuteType.INSERTIDENTITY, columns).ExecuteScalar(); return(TryParse.StrToInt(result)); }
/// <summary> /// 执行事务操作 /// </summary> /// <param name="entity">DMSTransactionEntity 实现实体</param> /// <param name="resultValueList">执行查询时返回执行的行数</param> /// <param name="errMsg">返回错误信息</param> /// <returns></returns> public virtual bool Update(DMSTransactionScopeEntity entity, ref List <int> resultValueList, ref string errMsg) { resultValueList = new List <int>(); Queue <TransactionScopeEntity> scopeEntityList = entity.GetEditTS(); bool flag = true; if (scopeEntityList != null && scopeEntityList.Count > 0) { //string providerName = string.Empty; //IDMSDbProfiler dbProfiler = GetProfiler(out providerName); #region scopeEntityList DMSDbType dbType = entity.InternalDMSDbType; using (var conn = entity.InternalDbProvider.GetOpenConnection()) { IDbTransaction transaction = conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); int resultValue = 0; string ResultSql = string.Empty; try { foreach (TransactionScopeEntity item in scopeEntityList) { #region scopeEntityList resultValue = 0; ResultSql = item.ResultSql; if (item.ExcuteType == DMSExcuteType.INSERTIDENTITY) { resultValue = TryParse.StrToInt(DMSDbAccess.ExecuteScalar(conn, item.EntityName, item.ResultSql, item.DataParameter, transaction, 30)); } else { resultValue = DMSDbAccess.Execute(conn, item.EntityName, item.ResultSql, item.DataParameter, transaction, 60); } #endregion #region ResultFlag if (item.ResultFlag && resultValue == 0) { errMsg = item.ResultFlag + "不能满足条件不能执行"; Log.Debug(ReflectionUtils.GetMethodBaseInfo(System.Reflection.MethodBase.GetCurrentMethod()), errMsg + "当前事务:" + item.ResultSql, null); if (item.DataParameter != null) { string strParam = string.Empty; foreach (var p in item.DataParameter.parameters) { strParam += string.Format("Name:{0} DbType:{1} Value:{2}{3}", p.Value.Name, p.Value.DbType, p.Value.Value, System.Environment.NewLine); } Log.Debug(ReflectionUtils.GetMethodBaseInfo(System.Reflection.MethodBase.GetCurrentMethod()), strParam, null); } flag = false; resultValueList.Add(resultValue); break; } #endregion resultValueList.Add(resultValue); } if (flag) { transaction.Commit(); } else { transaction.Rollback(); } } catch (Exception ex) { Log.Debug(ReflectionUtils.GetMethodBaseInfo(System.Reflection.MethodBase.GetCurrentMethod()), errMsg + "当前事务:" + ResultSql, ex); resultValue = 0; transaction.Rollback(); throw ex; } finally { entity.Clear(); conn.Close(); } } #endregion } return(flag); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dms"></param> /// <param name="entity"></param> /// <returns></returns> public static int InsertIdentity <T>(this DMS <T> dms, T entity) where T : class { var result = DMSInsert(dms, DMSExcuteType.INSERTIDENTITY, entity).ExecuteScalar(); return(TryParse.StrToInt(result)); }