[TypeConverterAttribute ("System.Data.SqlClient.SqlParameter+SqlParameterConverter, " + Consts.AssemblySystem_Data)]
public sealed class SqlParameter : DbParameter, IDbDataParameter, IDataParameter, ICloneable
{
+#region Import from old DbParameter
+ static Hashtable dbTypeMapping = new Hashtable ();
+ internal static Hashtable DbTypeMapping {
+ get { return dbTypeMapping;}
+ set { dbTypeMapping = value;}
+ }
+
+ // LAMESPEC: Implementors should populate the dbTypeMapping accordingly
+ internal Type SystemType {
+ get {
+ return (Type) dbTypeMapping [SqlDbType];
+ }
+ }
+#endregion
+
#region Fields
TdsMetaParameter metaParameter;
DbTypeMapping.Add (SqlDbType.NVarChar, typeof (string));
DbTypeMapping.Add (SqlDbType.SmallDateTime, typeof (DateTime));
DbTypeMapping.Add (SqlDbType.DateTime, typeof (DateTime));
+ DbTypeMapping.Add (SqlDbType.DateTime2, typeof (DateTime));
+ DbTypeMapping.Add (SqlDbType.DateTimeOffset, typeof (DateTimeOffset));
DbTypeMapping.Add (SqlDbType.Decimal, typeof (decimal));
DbTypeMapping.Add (SqlDbType.Float, typeof (double));
DbTypeMapping.Add (SqlDbType.Binary, typeof (byte []));
type_mapping.Add (typeof (SqlTypes.SqlXml), SqlDbType.Xml);
type_mapping.Add (typeof (object), SqlDbType.Variant);
+ type_mapping.Add (typeof (DateTimeOffset), SqlDbType.DateTimeOffset);
}
public SqlParameter ()
scale,
GetFrameworkValue);
metaParameter.RawValue = value;
- if (dbType != SqlDbType.Variant)
- SqlDbType = dbType;
+ SqlDbType = dbType;
Direction = direction;
SourceColumn = sourceColumn;
SourceVersion = sourceVersion;
SetSqlDbType ((SqlDbType) t);
}
+/*
// Returns System.Type corresponding to the underlying SqlDbType
internal override Type SystemType {
get {
}
}
}
+*/
DbType DbTypeFromName (string name)
{
MetaParameter.TypeName = "smalldatetime";
dbType = DbType.DateTime;
break;
+ case SqlDbType.DateTime2:
+ MetaParameter.TypeName = "datetime2";
+ dbType = DbType.DateTime2;
+ break;
+ case SqlDbType.DateTimeOffset:
+ MetaParameter.TypeName = "datetimeoffset";
+ dbType = DbType.DateTimeOffset;
+ break;
case SqlDbType.Decimal:
MetaParameter.TypeName = "decimal";
dbType = DbType.Decimal;
object ConvertToFrameworkType (object value, Type frameworkType)
{
+ if (frameworkType == typeof (string)) {
+ if (value is DateTime)
+ return ((DateTime) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffff");
+ if (value is DateTimeOffset)
+ return ((DateTimeOffset) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffffzzz");
+ }
+
object sqlvalue = Convert.ChangeType (value, frameworkType);
switch (sqlDbType) {
case SqlDbType.Money: