//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; } }
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)); }
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)); }