Esempio n. 1
0
        internal virtual bool DMSUpdate(DMSTransactionScopeEntity entity)
#endif
        {
            Queue <TransactionScopeEntity> scopeEntityList = entity.GetEditTS();

            if (scopeEntityList != null && scopeEntityList.Count > 0)
            {
                DMSDbType dbType = entity.InternalDMSDbType;
                foreach (TransactionScopeEntity item in scopeEntityList)
                {
                    System.Diagnostics.Debug.WriteLine(item.ResultSql);
                    System.Console.WriteLine(item.ResultSql);
                    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);
                        }
                        System.Diagnostics.Debug.WriteLine(strParam);
                        System.Console.WriteLine(strParam);
                    }
                }
            }
            return(true);
        }
Esempio n. 2
0
        /// <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);
        }