public static async Task <List <DbParameter> > UseDbParameterGenerator <TParameter>(this object sender) where TParameter : DbParameter, new () { List <DbParameter> _dbParameters = new List <DbParameter>(); try { _dbParameters = await Task.Run(() => { List <DbParameter> _list = new List <DbParameter>(); PropertyInfo[] _paramPropertyInfo = sender.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo item in _paramPropertyInfo) { SqlDataTypeAttribute _sqlDataTypeAttribute = (SqlDataTypeAttribute)item.GetCustomAttribute(typeof(SqlDataTypeAttribute)); ParameterAttribute _parameterAttribute = (ParameterAttribute)item.GetCustomAttribute(typeof(ParameterAttribute)); var _value = item.GetValue(sender); DbParameter _dbParameter = (DbParameter) new TParameter(); _dbParameter.DbType = _sqlDataTypeAttribute.SqlDbType; _dbParameter.ParameterName = _parameterAttribute.value; _dbParameter.Value = _value == null ? DBNull.Value : _value; _list.Add(_dbParameter); } return(_list); }); return(_dbParameters); } catch (Exception ex) { throw new Exception(""); } }
public async Task <List <DbParameter> > DbParametersListGeneratorAsync(object model, DbParameter dbParameter) { List <DbParameter> _dbParameters = new List <DbParameter>(); try { _dbParameters = await Task.Run(() => { List <DbParameter> _list = new List <DbParameter>(); PropertyInfo[] _paramPropertyInfo = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo item in _paramPropertyInfo) { SqlDataTypeAttribute _sqlDataTypeAttribute = (SqlDataTypeAttribute)item.GetCustomAttribute(typeof(SqlDataTypeAttribute)); ParameterAttribute _parameterAttribute = (ParameterAttribute)item.GetCustomAttribute(typeof(ParameterAttribute)); var _value = item.GetValue(model); DbParameter _dbParameter = (DbParameter) new TParameter(); _dbParameter.DbType = _sqlDataTypeAttribute.SqlDbType; _dbParameter.ParameterName = _parameterAttribute.value; _dbParameter.Value = _value == null? DBNull.Value : _value; _list.Add(_dbParameter); } return(_list); }); } catch (Exception ex) { NlogLoggerClient _client = new NlogLoggerClient(new NLogFileLogger(_classNameSpace)); await _client.ActionLoggerAsync(LogginLevels.LoggingLevels.Error, MethodBase.GetCurrentMethod().Name, ex.Message, ex); throw new Exception(ex.Message, ex); } return(_dbParameters); }