/// <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);
        }
Example #3
0
        /// <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);
        }