Exemplo n.º 1
0
        /// <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);