Esempio n. 1
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);
            }
        }
 /// <summary>
 /// Query: return dynamic value of object
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="obj"></param>
 /// <param name="proc"></param>
 /// <param name="instance"></param>
 /// <param name="queryOption"></param>
 /// <returns></returns>
 public async Task <T> SingleExecuteQuery <T>(Dictionary <string, dynamic> obj, string proc, byte instance = 1, DataConfiguration.DapperQueryOption queryOption = DataConfiguration.DapperQueryOption.FirstOrDefault)
 {
     try
     {
         return(await new Lib.DataGenerator().QueryData <T>(obj, proc, instance, queryOption));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Esempio n. 3
0
 public async Task <T> SingleExecuteQuery <T>(Dictionary <string, dynamic> obj, string proc, byte instance, DataConfiguration.DapperQueryOption queryOption)
 {
     return(await _adapterPattern.SingleExecuteQuery <T>(obj, proc, instance, queryOption));
 }
 /// <summary>
 /// Simple transaction - return dynamic value. Example: Bool, Int, Entity or other type of object
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <typeparam name="Q"></typeparam>
 /// <param name="obj"></param>
 /// <param name="proc"></param>
 /// <param name="action"></param>
 /// <param name="instance"></param>
 /// <param name="ignoreParas"></param>
 /// <param name="queryOption"></param>
 /// <returns></returns>
 public async Task <Q> SingleTransaction <T, Q>(T obj, string proc, char action, byte instance, string ignoreParas, DataConfiguration.DapperQueryOption queryOption)
 {
     return(await new Lib.DataGenerator().CommitData <T, Q>(obj, proc, action, instance, ignoreParas, queryOption));
 }
Esempio n. 5
0
 public async Task <Q> SingleTransaction <T, Q>(T obj, string proc, char action, byte instance, string ignoreParas, DataConfiguration.DapperQueryOption queryOption)
 {
     return(await _adapterPattern.SingleTransaction <T, Q>(obj, proc, action, instance, ignoreParas, queryOption));
 }