public Db(IDbConnectionProvider dbConnectionProvider, IDbValueConverter dbValueConverter, IDataReaderToPoco dataReaderToPoco, ISqlQueryBuilder sqlQueryBuilder) { _dbConnectionProvider = dbConnectionProvider ?? throw new ArgumentNullException(nameof(dbConnectionProvider)); _dbValueConverter = dbValueConverter ?? throw new ArgumentNullException(nameof(dbValueConverter)); _dataReaderToPoco = dataReaderToPoco ?? throw new ArgumentNullException(nameof(dataReaderToPoco)); _sqlQueryBuilder = sqlQueryBuilder ?? throw new ArgumentNullException(nameof(sqlQueryBuilder)); }
/// <summary> /// 配置映射的类型。 /// </summary> /// <param name="type"></param> /// <param name="dbTypeToMap">类型 type 对应的 DbType。如果是扩展的 DbType,务必对原生的 System.Data.IDataParameter 进行包装,拦截 IDataParameter.DbType 属性的 setter 以对 dbTypeToMap 处理。</param> /// <param name="dbValueConverter">指定一个转换器。可为 null。</param> public static void Configure(Type type, DbType dbTypeToMap, IDbValueConverter dbValueConverter) { Utils.CheckNull(type); type = type.GetUnderlyingType(); lock (_lockObj) { SetItem(_typeInfos, type, dbTypeToMap, dbValueConverter); } }
public MappingTypeBuilder HasDbValueConverter(IDbValueConverter dbValueConverter) { if (dbValueConverter == null) { throw new ArgumentNullException(nameof(dbValueConverter)); } this._mappingType.DbValueConverter = dbValueConverter; return(this); }
public MsSql2014Factory(string connectionString, IEntityMapper entityMapper = null) { _dbConnectionProvider = new InMemoryDbConnectionProvider(); _dbConnectionProvider.AddConnectionFactory("default", new MsSql2014ConnectionMaker(connectionString)); _dbValueConverter = new StrategiesDbValueConverter(); _entityDatabaseMapProvider = new EntityDatabaseMapProvider(entityMapper ?? new DirectPropertyEntityMapper()); _dataReaderToPoco = new DataReaderToPoco(_entityDatabaseMapProvider); ISqlQueryCutter sqlQueryCutter = new SqlQueryCutter(); _sqlQueryBuilder = new MsSql2014SqlQueryBuilder(_entityDatabaseMapProvider, sqlQueryCutter); }
public static bool TryGet(Type type, out IDbValueConverter converter) { var details = TypeDetails.Get(type); if (details.IsEnum) { converter = new EnumConverter(); return(true); } return(converters.TryGetValue(details.NonNullType, out converter)); }
/// <summary> /// 注册一个数据值类型转换器 /// </summary> /// <typeparam name="T">需要转换的类型</typeparam> /// <param name="converter">需要注册的转换器</param> /// <param name="overwrite">是否覆盖现有的转换器</param> public static void Register <T>(IDbValueConverter <T> converter, bool overwrite = false) { lock ( sync ) { if (!overwrite && ConverterCache <T> .ConverterInstance != null) { throw new InvalidOperationException(); } ConverterCache <T> .ConverterInstance = converter; convertToMethodDictionary[typeof(T)] = converter.ConvertValueTo; convertFromMethodDictionary[typeof(T)] = (value, dataType) => converter.ConvertValueFrom(value, dataType); } }
public void SetColumnConverter(string columnName, IDbValueConverter dbValueConverter) { if (columnName == null) { throw new ArgumentNullException(nameof(columnName)); } if (dbValueConverter == null) { throw new ArgumentNullException(nameof(dbValueConverter)); } if (_dbValueConverters.ContainsKey(columnName)) { _dbValueConverters[columnName] = dbValueConverter; } }
internal static void Add <T>(IDbValueConverter converter) { converters.Add(typeof(T), converter); }
public MRM2(MemberInfo member, IDbValueConverter dbValueConverter) { this._dbValueConverter = dbValueConverter; this._valueSetter = DelegateGenerator.CreateValueSetter(member); }
static void SetItem(Dictionary <Type, MappingTypeInfo> map, Type type, DbType mapDbType, IDbValueConverter dbValueConverter = null) { map[type] = new MappingTypeInfo(type, mapDbType, dbValueConverter); }
public MappingTypeInfo(Type type, DbType mapDbType, IDbValueConverter dbValueConverter) { this.Type = type; this.MapDbType = mapDbType; this.DbValueConverter = dbValueConverter; }
public MappingTypeBuilder HasDbValueConverter <TConverter>() where TConverter : IDbValueConverter { IDbValueConverter dbValueConverter = Activator.CreateInstance(typeof(TConverter)) as IDbValueConverter; return(this.HasDbValueConverter(dbValueConverter)); }