Example #1
0
        /// <summary>
        /// 获取实体对象中对应的数据库列的值。
        /// </summary>
        /// <typeparam name="TEntity">实体对象类型</typeparam>
        /// <param name="metaColumn">列的元数据</param>
        /// <param name="entity">实体对象</param>
        /// <returns>实体对象中对应的数据库列的值</returns>
        private static object GetColumnValue <TEntity>(MetaDataColumn metaColumn, TEntity entity)
        {
            object value = metaColumn.Member.GetValue(entity, null);

            //如果当前列的数据类型可设置为空类型且值为null
            return((IsNullableType(metaColumn.DataType) && value == null) ? DBNull.Value : value);
        }
Example #2
0
        private Dictionary<string, MetaDataColumn> GetColumns(Type entityType)
        {
            PropertyInfo[] properties = entityType.GetProperties();
            if (properties == null)
                return this._columns;

            this._columns = new Dictionary<string, MetaDataColumn>(properties.Length);
            foreach (PropertyInfo property in properties)
            {
                var attr = Attribute.GetCustomAttribute(property, typeof(ColumnAttribute)) as ColumnAttribute;
                if (attr == null) continue;
                var metacolumn = new MetaDataColumn(property, attr);
                this._columns.Add(metacolumn.Name.ToLower(), metacolumn);
            }

            return this._columns;
        }
Example #3
0
        /// <summary>
        /// 获取实体对象。
        /// </summary>
        /// <typeparam name="TEntity">实体对象类型</typeparam>
        /// <param name="dr">DbDataReader</param>
        /// <param name="entity">实体对象</param>
        /// <param name="metaDataTable">MetaDataTable对象</param>
        /// <returns>实体对象</returns>
        public static TEntity GetEntity <TEntity>(DbDataReader dr, TEntity entity, MetaDataTable metaDataTable)
        {
            for (int i = 0; i < dr.FieldCount; i++)
            {
                string colName = dr.GetName(i).ToLower();
                if (!metaDataTable.Columns.ContainsKey(colName))
                {
                    continue;
                }

                MetaDataColumn metaColumn = metaDataTable.Columns[colName];
                if (!dr.IsDBNull(i))
                {
                    object value = Convert.ChangeType(dr.GetValue(i),
                                                      IsNullableType(metaColumn.DataType) ?
                                                      metaColumn.DataType.GetGenericArguments()[0] : metaColumn.DataType);
                    metaColumn.Member.SetValue(entity, value, null);
                }
            }

            return(entity);
        }
Example #4
0
        private Dictionary <string, MetaDataColumn> GetColumns(Type entityType)
        {
            PropertyInfo[] properties = entityType.GetProperties();
            if (properties == null)
            {
                return(this._columns);
            }

            this._columns = new Dictionary <string, MetaDataColumn>(properties.Length);
            foreach (PropertyInfo property in properties)
            {
                var attr = Attribute.GetCustomAttribute(property, typeof(ColumnAttribute)) as ColumnAttribute;
                if (attr == null)
                {
                    continue;
                }
                var metacolumn = new MetaDataColumn(property, attr);
                this._columns.Add(metacolumn.Name.ToLower(), metacolumn);
            }

            return(this._columns);
        }
Example #5
0
 private static bool IsIgnored(MetaDataColumn metaColumn)
 {
     return(metaColumn.Attribute.IsIgnored || metaColumn.Attribute.IsIdentity);
 }