/// <summary> /// Retorna um dictionary, indexado pelos nomes das colunas da tabela, com valores /// dos nomes das propriedades da classe /// </summary> /// <param name="type"></param> /// <returns></returns> public static Dictionary <string, PropertyInfo> GetMapColumns(Type type) { Dictionary <string, PropertyInfo> columns = new Dictionary <string, PropertyInfo>(StringComparer.OrdinalIgnoreCase); var pis = type.GetProperties().ToList <PropertyInfo>(); //if (type.(typeof(Record))) //{ var pir = typeof(Record).GetProperties().ToDictionary(p => p.Name); pis.RemoveAll(p => pir.ContainsKey(p.Name)); //} foreach (PropertyInfo pi in pis) { Type t = pi.PropertyType; string name = t.Name; var cas = pi.GetCustomAttributes(typeof(DbColumnAttribute), true).ToList(); if (cas.Count == 1) { DbColumnAttribute col = (DbColumnAttribute)cas[0]; if (col.ColumnName == null) { col.ColumnName = pi.Name; } columns.Add(col.ColumnName, pi); } else { columns.Add(pi.Name, pi); } } return(columns); }
/// <summary> /// retorna um Dictionary com os nomes das propriedades como chave /// e os objectos ColumnAttribute como valores /// </summary> /// <param name="type"></param> /// <returns></returns> public static Dictionary <string, DbColumnAttribute> GetColumns(Type type) { Dictionary <string, DbColumnAttribute> columns = new Dictionary <string, DbColumnAttribute>(StringComparer.OrdinalIgnoreCase); PropertyInfo[] pis = type.GetProperties(); foreach (PropertyInfo pi in pis) { Type t = pi.PropertyType; string name = t.Name; var cas = pi.GetCustomAttributes(typeof(DbColumnAttribute), true).ToList(); if (cas.Count == 1) { DbColumnAttribute col = (DbColumnAttribute)cas[0]; if (col.ColumnName == null) { col.ColumnName = pi.Name; } columns.Add(pi.Name, col); } // Poco else { columns.Add(pi.Name, new DbColumnAttribute(pi.Name)); } } return(columns); }
/// <summary> /// Retorna o nome da coluna na base de dados de uma propriedade da Model /// </summary> /// <param name="model"></param> /// <param name="propertyName"></param> /// <returns></returns> public static string GetColumnName(object model, string propertyName) { var prop = model.GetType().GetProperty(propertyName); if (prop == null) { return(null); } var cas = prop.GetCustomAttributes(typeof(DbColumnAttribute), true); if (cas.Length > 0) { DbColumnAttribute col = (DbColumnAttribute)cas[0]; return(col.ColumnName); } return(null); }