public static void UseMappingType(IMappingType mappingType) { MappingTypeSystem.Configure(mappingType); }
/// <summary> /// 配置映射类型 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static MappingTypeBuilder ConfigureMappingType <T>() { return(MappingTypeSystem.Configure <T>()); }
public virtual void SetupParameter(IDbDataParameter parameter, DbParam param) { parameter.ParameterName = param.Name; Type parameterType = null; if (param.Value == null || param.Value == DBNull.Value) { parameter.Value = DBNull.Value; parameterType = param.Type ?? typeof(object); } else { parameterType = param.Value.GetType(); if (parameterType.IsEnum) { parameterType = Enum.GetUnderlyingType(parameterType); parameter.Value = Convert.ChangeType(param.Value, parameterType); } else { parameter.Value = param.Value; } } if (param.Precision != null) parameter.Precision = param.Precision.Value; if (param.Scale != null) parameter.Scale = param.Scale.Value; if (param.Size != null) parameter.Size = param.Size.Value; if (param.DbType != null) parameter.DbType = param.DbType.Value; else { TypeCode typeCode = Convert.GetTypeCode(parameter.Value); DbType dbType = DbTypes[(int)typeCode]; if (dbType != DbType.Object) { parameter.DbType = dbType; } else { var t = MappingTypeSystem.GetDbType(parameterType); if (t != null) parameter.DbType = t.Value; } } const int defaultSizeOfStringOutputParameter = 4000;/* 当一个 string 类型输出参数未显示指定 Size 时使用的默认大小。如果有需要更大或者该值不足以满足需求,需显示指定 DbParam.Size 值 */ if (param.Direction == ParamDirection.Input) { parameter.Direction = ParameterDirection.Input; } else if (param.Direction == ParamDirection.Output) { parameter.Direction = ParameterDirection.Output; param.Value = null; if (param.Size == null && param.Type == PublicConstants.TypeOfString) { parameter.Size = defaultSizeOfStringOutputParameter; } } else if (param.Direction == ParamDirection.InputOutput) { parameter.Direction = ParameterDirection.InputOutput; if (param.Size == null && param.Type == PublicConstants.TypeOfString) { parameter.Size = defaultSizeOfStringOutputParameter; } } else throw new NotSupportedException(string.Format("ParamDirection '{0}' is not supported.", param.Direction)); }