Exemple #1
0
        /// <summary>
        /// 执行查询的存储过程,不分页
        /// </summary>
        /// <typeparam name="T">类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。</typeparam>
        /// <param name="iEntity">参数实体</param>
        /// <param name="errMsg">错误信息</param>
        /// <returns></returns>
        private IEnumerable <T> GetListing <T>(ISPEntity iEntity, ref string errMsg) where T : class
        {
            StoredProcedureMappingAttribute attribute = DMSExpression.GetStoredProcedureMappingAttribute(iEntity.GetType());
            DMSDbProvider provider = DMSExpression.GetDbProvider(attribute.DMSDbType, attribute.ConfigName);

            using (var conn = provider.GetOpenConnection())
            {
                DynamicParameters parameters = GetParameters(iEntity);
                return(DMSDbAccess.Query <T>(conn, attribute.Name, attribute.Name, parameters, 0, null, true, 30, System.Data.CommandType.StoredProcedure));
            }
        }
Exemple #2
0
        /// <summary>
        /// 执行更新,删除,插入的存储过程
        /// </summary>
        /// <param name="iEntity">存储过程实体类</param>
        /// <param name="errMsg">错误信息</param>
        /// <returns></returns>
        public bool ExecuteNoQuery(ISPEntity iEntity, ref string errMsg)
        {
            StoredProcedureMappingAttribute attribute = DMSExpression.GetStoredProcedureMappingAttribute(iEntity.GetType());
            DMSDbProvider provider = DMSExpression.GetDbProvider(attribute.DMSDbType, attribute.ConfigName);

            using (var conn = provider.GetOpenConnection())
            {
                DynamicParameters parameters = GetParameters(iEntity);

                int resultValue = DMSDbAccess.Execute(conn, attribute.Name, attribute.Name, parameters, null, 30, System.Data.CommandType.StoredProcedure);
                if (resultValue > 0)
                {
                    return(true);
                }
                return(false);
            }
        }
Exemple #3
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);
        }