Esempio n. 1
0
        public virtual async Task <IEnumerable <Q> > CommitData <T, Q>(T obj, string proc, byte instance = 1, string ignoreParas = "")
        {
            string fields = string.Empty;
            var    para   = GetPropertyObject <T>(obj, ignoreParas, ref fields);
            var    data   = default(IEnumerable <Q>);

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    try
                    {
                        using (IDbConnection dapper = DapperConfiguration.Open(instance))
                        {
                            data = await dapper.QueryAsync <Q>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                            scope.Complete();
                            return(data);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError(ex);
                        return(data);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
                return(data);
            }
        }
Esempio n. 2
0
        //TODO: multiple para output
        //public virtual async Task<Tuple<IEnumerable<T>, List<ReturnOuputModel>>> QueryData<T>(Dictionary<string, dynamic> obj, List<OutputModel> outputparams, string proc, byte instance = 1)
        //{
        //    string fields = string.Empty;
        //    bool isOutput = (outputparams != null && outputparams.Count > 0);

        //    var para = (obj == null ? null : (!isOutput ? GetPropertyObject(obj, ref fields) : GetPropertyObject(obj, outputparams, ref fields)));
        //    var data = default(IEnumerable<T>);
        //    var output = default(List<ReturnOuputModel>);
        //    try
        //    {
        //        using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
        //        {

        //            try
        //            {
        //                using (IDbConnection dapper = DapperConfiguration.Open(instance))
        //                {
        //                    //DapperConfiguration.OpenConnection(instance);
        //                    if (para != null)
        //                    {
        //                        data = await dapper.QueryAsync<T>(proc, para, commandType: System.Data.CommandType.StoredProcedure);
        //                        if (isOutput)
        //                        {

        //                            foreach (var item in outputparams)
        //                            {
        //                                var opdata = new ReturnOuputModel();
        //                                opdata.TName = item.TName;
        //                                Type type = DbTypeToType[item.TValue];
        //                                opdata.TValue = para.Get<string>(item.TName);

        //                                output.Add()
        //                            }

        //                        }
        //                    }
        //                    else
        //                        data = await dapper.QueryAsync<T>(proc, commandType: System.Data.CommandType.StoredProcedure);

        //                    //DapperConfiguration.CloseConnection();
        //                    scope.Complete();
        //                    return data;
        //                }
        //            }
        //            catch (Exception ex)
        //            {
        //                Logger.LogError(ex);
        //                return Tuple.Create(data, output);
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Logger.LogError(ex);
        //        return Tuple.Create(data, output);
        //    }
        //}

        public virtual async Task <T> QueryData <T>(Dictionary <string, dynamic> obj, string proc, byte instance = 1, DataConfiguration.DapperQueryOption queryOption = DataConfiguration.DapperQueryOption.FirstOrDefault)
        {
            string fields = string.Empty;
            var    para   = GetPropertyObject(obj, ref fields);
            var    data   = default(T);

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    try
                    {
                        using (IDbConnection dapper = DapperConfiguration.Open(instance))
                        {
                            switch (queryOption)
                            {
                            case DataConfiguration.DapperQueryOption.Single:
                                data = await dapper.QuerySingleAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                                break;

                            case DataConfiguration.DapperQueryOption.SingleOrDefault:
                                data = await dapper.QuerySingleAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                                break;

                            case DataConfiguration.DapperQueryOption.First:
                                data = await dapper.QueryFirstOrDefaultAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                                break;

                            case DataConfiguration.DapperQueryOption.FirstOrDefault:
                                data = await dapper.QueryFirstOrDefaultAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                                break;
                            }

                            scope.Complete();
                            return(data);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError(ex);
                        return(data);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
                return(data);
            }
        }
Esempio n. 3
0
        public virtual async Task <Tuple <IEnumerable <T>, int> > QueryDataOut <T>(Dictionary <string, dynamic> obj, string proc, string outParaName, byte instance = 1)
        {
            string fields   = string.Empty;
            var    para     = (obj == null ? null : GetPropertyObject(obj, outParaName, ref fields));
            var    data     = default(IEnumerable <T>);
            bool   isOutput = (outParaName != null && outParaName.Length > 0);
            int    outValue = 0;

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    try
                    {
                        using (IDbConnection dapper = DapperConfiguration.Open(instance))
                        {
                            //DapperConfiguration.OpenConnection(instance);
                            if (para != null)
                            {
                                data = await dapper.QueryAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);

                                if (isOutput)
                                {
                                    outValue = para.Get <int>(outParaName);
                                }
                            }
                            else
                            {
                                data = await dapper.QueryAsync <T>(proc, commandType : System.Data.CommandType.StoredProcedure);
                            }

                            //DapperConfiguration.CloseConnection();
                            scope.Complete();
                            return(Tuple.Create(data, outValue));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError(ex);
                        return(Tuple.Create(data, outValue));
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
                return(Tuple.Create(data, outValue));
            }
        }
Esempio n. 4
0
        public virtual async Task <IEnumerable <T> > QueryData <T>(Dictionary <string, dynamic> obj, string proc, byte instance = 1)
        {
            //Check data
            if (obj != null && obj.Count > 0 && obj.ContainsKey("AvailableData"))
            {
                proc += "_Available";
                obj.Remove("AvailableData");
            }

            string fields = string.Empty;
            var    para   = (obj == null? null: GetPropertyObject(obj, ref fields));
            var    data   = default(IEnumerable <T>);

            try
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    try
                    {
                        using (IDbConnection dapper = DapperConfiguration.Open(instance))
                        {
                            //DapperConfiguration.OpenConnection(instance);
                            if (para != null)
                            {
                                data = await dapper.QueryAsync <T>(proc, para, commandType : System.Data.CommandType.StoredProcedure);
                            }
                            else
                            {
                                data = await dapper.QueryAsync <T>(proc, commandType : System.Data.CommandType.StoredProcedure);
                            }

                            //DapperConfiguration.CloseConnection();
                            scope.Complete();
                            return(data);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError(ex);
                        return(data);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
                return(data);
            }
        }