IDictionary <string, string> ProcessRow(IDictionary <string, object> row, ExportType exportType) { var dico = new Dictionary <string, string>(); foreach (var field in row) { Property prop = Map.FindPropertyByColumnName(field.Key); if (prop == null) { continue; } string value; string key; if (exportType == ExportType.Sql) { key = ExportDialect.Escape(field.Key); var clrType = ExportDialect.GetClrType(prop.DbType, prop.IsNullable); var converter = TypeConverterStore.GetConverterFactoryMethod(clrType); var clrValue = converter(field.Value); value = ExportDialect.GetValueAsSqlString(clrValue, prop); } else { key = field.Key; value = DbTypeConverter.ConvertTo <string>(field.Value); } dico.Add(key, value); } return(dico); }
void Load() { AddConverter(typeof(string), DbTypeConverter.ConvertTo <string>); //byte AddConverter(typeof(byte?), (x) => DbTypeConverter.ConvertTo <byte?>(x)); AddConverter(typeof(byte), (x) => DbTypeConverter.ConvertTo <byte>(x)); //Int16 AddConverter(typeof(short?), (x) => DbTypeConverter.ConvertTo <short?>(x)); AddConverter(typeof(short), (x) => DbTypeConverter.ConvertTo <short>(x)); //Int32 AddConverter(typeof(int?), (x) => DbTypeConverter.ConvertTo <int?>(x)); AddConverter(typeof(int), (x) => DbTypeConverter.ConvertTo <int>(x)); //Int64 AddConverter(typeof(long?), (x) => DbTypeConverter.ConvertTo <long?>(x)); AddConverter(typeof(long), (x) => DbTypeConverter.ConvertTo <long>(x)); //Datetime AddConverter(typeof(DateTime?), (x) => DbTypeConverter.ConvertTo <DateTime?>(x)); AddConverter(typeof(DateTime), (x) => DbTypeConverter.ConvertTo <DateTime>(x)); //DatetimeOffset AddConverter(typeof(DateTimeOffset?), (x) => DbTypeConverter.ConvertTo <DateTimeOffset?>(x)); AddConverter(typeof(DateTimeOffset), (x) => DbTypeConverter.ConvertTo <DateTimeOffset>(x)); //char AddConverter(typeof(char?), (x) => DbTypeConverter.ConvertTo <char?>(x)); AddConverter(typeof(char), (x) => DbTypeConverter.ConvertTo <char>(x)); //boolean AddConverter(typeof(bool?), (x) => DbTypeConverter.ConvertTo <bool?>(x)); AddConverter(typeof(bool), (x) => DbTypeConverter.ConvertTo <bool>(x)); //Guids AddConverter(typeof(Guid?), (x) => DbTypeConverter.ConvertTo <Guid?>(x)); AddConverter(typeof(Guid), (x) => DbTypeConverter.ConvertTo <Guid>(x)); //single AddConverter(typeof(float?), (x) => DbTypeConverter.ConvertTo <float?>(x)); AddConverter(typeof(float), (x) => DbTypeConverter.ConvertTo <float>(x)); //double AddConverter(typeof(double?), (x) => DbTypeConverter.ConvertTo <double?>(x)); AddConverter(typeof(double), (x) => DbTypeConverter.ConvertTo <double>(x)); //decimal AddConverter(typeof(decimal?), (x) => DbTypeConverter.ConvertTo <decimal?>(x)); AddConverter(typeof(decimal), (x) => DbTypeConverter.ConvertTo <decimal>(x)); }