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