/// <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); }
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 = (ColumnAttribute)Attribute.GetCustomAttribute(property, typeof(ColumnAttribute)); if (attr == null) continue; var metacolumn = new MetaDataColumn(property, attr); this._columns.Add(metacolumn.Name.ToLower(), metacolumn); } return this._columns; }
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 = (ColumnAttribute)Attribute.GetCustomAttribute(property, typeof(ColumnAttribute)); if (attr == null) { continue; } var metacolumn = new MetaDataColumn(property, attr); this._columns.Add(metacolumn.Name.ToLower(), metacolumn); } return(this._columns); }
/// <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); }
private static bool IsIgnored(MetaDataColumn metaColumn) { return(metaColumn.Attribute.IsIgnored || metaColumn.Attribute.IsIdentity); }