public string[] GetParameters <T>(DatabaseParameterListMode mode, string table = "") { var type = typeof(T); var properties = type.GetProperties(); var columns = new List <String>(); foreach (var property in properties) { var attributes = property.GetCustomAttributes <Column>(); if (attributes == null || attributes.Count() == 0) { continue; } Column attribute = null; if (string.IsNullOrEmpty(table)) { attribute = attributes.FirstOrDefault(); } else { attribute = attributes.Where(x => x.Table.Equals(table, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); } if (attribute == null) { continue; } if (mode == DatabaseParameterListMode.ToInsertStatements && !attribute.Insert) { continue; } if (mode == DatabaseParameterListMode.ToUpdateStatements && !attribute.Update) { continue; } string column = ""; switch (mode) { case DatabaseParameterListMode.ToInsertStatements: case DatabaseParameterListMode.OnlyList: column = NormalizeParameterName(attribute.Name); break; case DatabaseParameterListMode.ToUpdateStatements: column = $"{attribute.Name} = {NormalizeParameterName(attribute.Name)}"; break; } columns.Add(column); } return(columns.ToArray()); }
public Database AddParameters <T>(T entity, DatabaseParameterListMode mode, string table = "") { var type = typeof(T); var properties = type.GetProperties(); var columns = new List <String>(); foreach (var property in properties) { var attributes = property.GetCustomAttributes <Column>(); if (attributes == null || attributes.Count() == 0) { continue; } Column attribute = null; if (string.IsNullOrEmpty(table)) { attribute = attributes.FirstOrDefault(); } else { attribute = attributes.Where(x => x.Table.Equals(table, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); } if (attribute == null) { continue; } if (mode == DatabaseParameterListMode.ToInsertStatements && !attribute.Insert) { continue; } if (mode == DatabaseParameterListMode.ToUpdateStatements && !attribute.Update) { continue; } AddParameterInput(NormalizeParameterName(attribute.Name), property.GetValue(entity)); } return(this); }