public async Task <T> ExecuteScalarAsync <T>(Sql Sql) { string sql = Sql.SQL; object[] args = Sql.Arguments; try { this.OpenSharedConnectionInternal(); using (DbCommand cmd = this.CreateCommand(this._sharedConnection, sql, args)) { object val = await this.ExecuteScalarHelperAsync(cmd).ConfigureAwait(false); if (val == null || val == DBNull.Value) { return(await TaskAsyncHelper.FromResult(default(T)).ConfigureAwait(false)); } Type t = typeof(T); Type u = Nullable.GetUnderlyingType(t); return((T)Convert.ChangeType(val, u ?? t)); } } catch (Exception x) { this.OnExceptionInternal(x); throw; } finally { this.CloseSharedConnectionInternal(); } }
public virtual Task <int> DeleteAsync(string tableName, string primaryKeyName, object poco, object primaryKeyValue) { return(this.DeleteImp(tableName, primaryKeyName, poco, primaryKeyValue, this.ExecuteAsync, TaskAsyncHelper.FromResult(0))); }
public virtual Task <int> UpdateAsync(string tableName, string primaryKeyName, object poco, object primaryKeyValue, IEnumerable <string> columns) { return(this.UpdateImp(tableName, primaryKeyName, poco, primaryKeyValue, columns, async(sql, args, next) => next(await this.ExecuteAsync(sql, args).ConfigureAwait(false)), TaskAsyncHelper.FromResult(0))); }