public SqlServerMappingSchema() : base(ProviderName.SqlServer) { SetConvertExpression <SqlXml, XmlReader>( s => s.IsNull ? DefaultValue <XmlReader> .Value : s.CreateReader(), s => s.CreateReader()); SetConvertExpression <string, SqlXml>(s => new SqlXml(new MemoryStream(Encoding.UTF8.GetBytes(s)))); AddScalarType(typeof(SqlBinary), SqlBinary.Null, true, DataType.VarBinary); AddScalarType(typeof(SqlBoolean), SqlBoolean.Null, true, DataType.Boolean); AddScalarType(typeof(SqlByte), SqlByte.Null, true, DataType.Byte); AddScalarType(typeof(SqlDateTime), SqlDateTime.Null, true, DataType.DateTime); AddScalarType(typeof(SqlDecimal), SqlDecimal.Null, true, DataType.Decimal); AddScalarType(typeof(SqlDouble), SqlDouble.Null, true, DataType.Double); AddScalarType(typeof(SqlGuid), SqlGuid.Null, true, DataType.Guid); AddScalarType(typeof(SqlInt16), SqlInt16.Null, true, DataType.Int16); AddScalarType(typeof(SqlInt32), SqlInt32.Null, true, DataType.Int32); AddScalarType(typeof(SqlInt64), SqlInt64.Null, true, DataType.Int64); AddScalarType(typeof(SqlMoney), SqlMoney.Null, true, DataType.Money); AddScalarType(typeof(SqlSingle), SqlSingle.Null, true, DataType.Single); AddScalarType(typeof(SqlString), SqlString.Null, true, DataType.NVarChar); AddScalarType(typeof(SqlXml), SqlXml.Null, true, DataType.Xml); try { foreach (var typeName in new[] { "SqlHierarchyId", "SqlGeography", "SqlGeometry" }) { var type = Type.GetType("Microsoft.SqlServer.Types.{0}, Microsoft.SqlServer.Types".Args(typeName)); if (type == null) { continue; } var p = type.GetProperty("Null"); var l = Expression.Lambda <Func <object> >( Expression.Convert(Expression.Property(null, p), typeof(object))); var nullValue = l.Compile()(); AddScalarType(type, nullValue, true, DataType.Udt); SqlServerDataProvider.SetUdtType(type, typeName.Substring(3).ToLower()); } } catch { } SetValueToSqlConverter(typeof(String), (sb, dt, v) => ConvertStringToSql(sb, dt, v.ToString())); SetValueToSqlConverter(typeof(Char), (sb, dt, v) => ConvertCharToSql(sb, dt, (char)v)); SetValueToSqlConverter(typeof(DateTime), (sb, dt, v) => ConvertDateTimeToSql(sb, (DateTime)v)); SetValueToSqlConverter(typeof(TimeSpan), (sb, dt, v) => ConvertTimeSpanToSql(sb, dt, (TimeSpan)v)); SetValueToSqlConverter(typeof(DateTimeOffset), (sb, dt, v) => ConvertDateTimeOffsetToSql(sb, dt, (DateTimeOffset)v)); SetValueToSqlConverter(typeof(byte[]), (sb, dt, v) => ConvertBinaryToSql(sb, (byte[])v)); SetValueToSqlConverter(typeof(Binary), (sb, dt, v) => ConvertBinaryToSql(sb, ((Binary)v).ToArray())); SetDataType(typeof(string), new SqlDataType(DataType.NVarChar, typeof(string), int.MaxValue)); }
internal static void Configure(SqlServerDataProvider provider) { foreach (var type in _types.Value) { provider.AddUdtType(type.Type, type.TypeName, type.Null, DataType.Udt); } }
protected override Type GetSystemType(string columnType, DataTypeInfo dataType, int length, int precision, int scale) { switch (columnType) { case "hierarchyid": case "geography": case "geometry": return(SqlServerDataProvider.GetUdtType(columnType)); } return(base.GetSystemType(columnType, dataType, length, precision, scale)); }
protected override Type GetSystemType(string dataType, string columnType, DataTypeInfo dataTypeInfo, long?length, int?precision, int?scale) { switch (dataType) { case "tinyint": return(typeof(byte)); case "hierarchyid": case "geography": case "geometry": return(SqlServerDataProvider.GetUdtType(dataType)); } return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale)); }
public SqlServerBulkCopy(SqlServerDataProvider dataProvider) { _dataProvider = dataProvider; }
public SqlServerSchemaProvider(SqlServerDataProvider provider) { Provider = provider; }
public SqlServerBulkCopy(SqlServerDataProvider provider) { _provider = provider; }
public SqlServer2000SchemaProvider(SqlServerDataProvider provider) : base(provider) { }