public async Task <T> InsertAsync <T>(T entity, Enum product) where T : class { try { if (entity == null) { return(null); } var assemblies = new List <Assembly> { Assembly.GetAssembly(typeof(T)) }; DapperAsyncExtensions.SetMappingAssemblies(assemblies); var t = typeof(T); var proModifiedDtTime = t.GetProperty("ModifiedOn"); if (proModifiedDtTime != null) { proModifiedDtTime.SetValue(entity, DateTime.Now, null); } var proCreatedDtTime = t.GetProperty("CreatedOn"); if (proCreatedDtTime != null) { proCreatedDtTime.SetValue(entity, DateTime.Now, null); } return(await WithConnection(async c => { var id = await c.InsertAsync(entity); return await GetAsync <T>(id, product); }, product)); } catch (Exception ex) { _logger.Error(ex.Message + "------" + ex.StackTrace); throw; } }
public async Task <T> GetAsync <T>(object parameters, Enum product) where T : class { var assemblies = new List <Assembly> { Assembly.GetAssembly(typeof(T)) }; DapperAsyncExtensions.SetMappingAssemblies(assemblies); string query = "Select * from [{tablename}] "; query = query.Replace("{tablename}", typeof(T).Name); //var whereclause = parameters.GetType().GetProperties().Select(prop => prop.Name + "=" + "@" + prop.Name).ToList(); List <string> whereclause = new List <string>(); foreach (var prop in parameters.GetType().GetProperties()) { var propValue = prop.GetValue(parameters, null); if (propValue == null) { whereclause.Add(prop.Name + " is null"); } else { whereclause.Add(prop.Name + "=" + "@" + prop.Name); } } if (whereclause.Any()) { query = query + " where " + string.Join(" and ", whereclause); } return(await WithConnection(async c => await c.QueryFirstOrDefaultAsync <T>(query, parameters, commandType: CommandType.Text), product)); }
public async Task <IEnumerable <decimal> > InsertMultipleAsync <T>(List <T> entities, Enum product) where T : class { try { if (!entities.Any()) { return(null); } var assemblies = new List <Assembly> { Assembly.GetAssembly(typeof(T)) }; DapperAsyncExtensions.SetMappingAssemblies(assemblies); var t = typeof(T); var mapper = DapperExtensions.DapperExtensions.GetMap <T>(); var tableName = mapper.TableName; var query = "insert into " + tableName + " (##columns) values (##values);SELECT SCOPE_IDENTITY();"; var columns = new List <string>(); var values = new List <string>(); for (var i = 0; i < entities.Count; i++) { foreach (var prop in mapper.Properties) { if (prop.KeyType == KeyType.Identity) { continue; } columns.Add(prop.ColumnName); values.Add("@" + prop.Name + i); } query = query.Replace("##columns", string.Join(",", columns)) .Replace("##values", string.Join(",", values)); } var p = new DynamicParameters(); for (var i = 0; i < entities.Count; i++) { foreach (var prop in mapper.Properties) { if (prop.KeyType == KeyType.Identity) { continue; } columns.Add(prop.ColumnName); values.Add(prop.Name + i); var pro = t.GetProperty(prop.Name); if (pro != null) { p.Add(prop.Name + i, pro.GetValue(entities[i], null)); } } } return(await WithConnection(async c => { var aa = await c.QueryMultipleAsync(query, p, commandType: CommandType.Text); var identityColumns = await aa.ReadAsync <decimal>(); return identityColumns; }, product)); } catch (Exception ex) { _logger.Error(ex.Message + "------" + ex.StackTrace); throw; } }