/// <summary> /// 获取实体 /// </summary> /// <param name="sender">方法请求来源</param> /// <param name="args">相关参数</param> /// <returns>数据表实体</returns> protected override T CreateEntity(Object sender, EntityCreatingArgs args) { T entity = new T(); PropertyInfo[] props = this._entityType.GetProperties(); foreach (PropertyInfo prop in props) { DatabaseColumnAttribute attr = null; if (this._mapping.TryGetValue(prop.Name, out attr) && attr != null) { DataType dataType = (attr.DataType.HasValue ? attr.DataType.Value : DataTypeHelper.InternalGetDataType(prop.PropertyType)); Object value; if (EntityHelper.InternalIsNullableType(prop.PropertyType)) { value = this.LoadNullableValue(args, attr.ColumnName, dataType); } else { value = this.LoadValue(args, attr.ColumnName, dataType); } prop.SetValue(entity, value, null); } } return(entity); }
/// <summary> /// 读取可空日期型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>日期型结果</returns> protected DateTimeOffset?LoadNullableDateTimeOffset(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToDateTimeOffset(args.Row[columnName])); } else { return(null); } }
/// <summary> /// 读取可空单精度浮点值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>单精度浮点型结果</returns> protected Single?LoadNullableSingle(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToSingle(args.Row[columnName])); } else { return(null); } }
/// <summary> /// 读取指定类型数据 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <param name="dataType">数据类型</param> /// <typeparam name="TValue">指定类型</typeparam> /// <returns>指定类型数据</returns> protected TValue LoadValue <TValue>(EntityCreatingArgs args, String columnName, DataType dataType) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return((TValue)DbConvert.ToValue(args.Row[columnName], dataType)); } else { return(default(TValue)); } }
/// <summary> /// 读取指定类型数据 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <param name="dataType">数据类型</param> /// <returns>指定类型数据</returns> protected Object LoadValue(EntityCreatingArgs args, String columnName, DataType dataType) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToValue(args.Row[columnName], dataType)); } else { return(DbConvert.GetDefaultValue(dataType)); } }
/// <summary> /// 读取字符串 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>字符串结果</returns> protected String LoadString(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToString(args.Row[columnName])); } else { return(String.Empty); } }
/// <summary> /// 读取Guid值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>Guid结果</returns> protected Guid LoadGuid(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToGuid(args.Row[columnName])); } else { return(default(Guid)); } }
/// <summary> /// 读取日期型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>日期型结果</returns> protected DateTime LoadDateTime(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToDateTime(args.Row[columnName])); } else { return(default(DateTime)); } }
/// <summary> /// 读取8字节无符号整型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>8字节无符号整型结果</returns> protected UInt64 LoadUInt64(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToUInt64(args.Row[columnName])); } else { return(default(UInt64)); } }
/// <summary> /// 读取4字节整型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>4字节整型结果</returns> protected Int32 LoadInt32(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToInt32(args.Row[columnName])); } else { return(default(Int32)); } }
/// <summary> /// 读取字节型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>字节型结果</returns> protected Char LoadChar(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToChar(args.Row[columnName])); } else { return(default(Char)); } }
/// <summary> /// 读取布尔型值 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>布尔型结果</returns> protected Boolean LoadBoolean(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(DbConvert.ToBoolean(args.Row[columnName])); } else { return(default(Boolean)); } }
/// <summary> /// 读取指定类型数据 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <param name="dataType">数据类型</param> /// <typeparam name="TValue">指定类型</typeparam> /// <returns>指定类型数据</returns> protected Nullable <TValue> LoadNullableValue <TValue>(EntityCreatingArgs args, String columnName, DataType dataType) where TValue : struct { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return((TValue)DbConvert.ToValue(args.Row[columnName], dataType)); } else { return(null); } }
/// <summary> /// 读取字节数组 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <returns>字节数组结果</returns> protected Byte[] LoadNullableBytes(EntityCreatingArgs args, String columnName) { if (args.Columns.Contains(columnName) && !DbConvert.IsDBNull(args.Row[columnName])) { return(args.Row[columnName] as Byte[]); } else { return(null); } }
/// <summary> /// 读取指定类型数据 /// </summary> /// <param name="args">对象创建参数</param> /// <param name="columnName">列名称</param> /// <typeparam name="TValue">指定类型</typeparam> /// <returns>指定类型数据</returns> protected TValue LoadValue <TValue>(EntityCreatingArgs args, String columnName) { return(this.LoadValue <TValue>(args.Row, args.Columns, columnName)); }
/// <summary> /// 获取实体 /// </summary> /// <param name="sender">请求SQL语句</param> /// <param name="args">相关参数</param> /// <returns>数据表实体</returns> protected abstract T CreateEntity(Object sender, EntityCreatingArgs args);