public override string ConvertTypeToSQLType(Type type, bool preferUnicode = true, string maxLen = "4000") { string retval = null; TypeSwitch.ForType(type, TypeSwitch.Case <char>(() => retval = preferUnicode ? "CHAR(1) CHARACTER SET ISO8859_1" : "CHAR(1) CHARACTER SET ASCII"), TypeSwitch.Case <string>(() => retval = (preferUnicode ? "VARCHAR({0}) CHARACTER SET ISO8859_1" : "VARCHAR({0}) CHARACTER SET ASCII").FormatWith(maxLen)), TypeSwitch.Case <byte>(() => retval = "SMALLINT"), TypeSwitch.Case <bool>(() => retval = "CHAR(1)"), TypeSwitch.Case <Guid>(() => retval = "CHAR(16) CHARACTER SET OCTETS"), TypeSwitch.Case <short>(() => retval = "SMALLINT"), TypeSwitch.Case <int>(() => retval = "INTEGER"), TypeSwitch.Case <long>(() => retval = "BIGINT"), TypeSwitch.Case <decimal>(() => retval = "DECIMAL(18,4)"), TypeSwitch.Case <float>(() => retval = "FLOAT"), TypeSwitch.Case <double>(() => retval = "DOUBLE"), TypeSwitch.Case <DateTime>(() => retval = "TIMESTAMP"), TypeSwitch.Case <Byte[]>(() => retval = "BLOB") ); if (retval == null) { throw new SoftwareException("Unable to convert type '{0}' to sql type.", type); } return(retval); }
public override string ConvertTypeToSQLType(Type type, bool preferUnicode = true, string maxLen = "MAX") { string retval = null; TypeSwitch.ForType(type, TypeSwitch.Case <char>(() => retval = preferUnicode ? "NCHAR" : "CHAR"), TypeSwitch.Case <string>(() => retval = (preferUnicode ? "NVARCHAR({0})" : "VARCHAR({0})").FormatWith(maxLen)), TypeSwitch.Case <byte>(() => retval = "TINYINT"), TypeSwitch.Case <bool>(() => retval = "BIT"), TypeSwitch.Case <Guid>(() => retval = "UNIQUEIDENTIFIER"), TypeSwitch.Case <short>(() => retval = "SMALLINT"), TypeSwitch.Case <int>(() => retval = "INT"), TypeSwitch.Case <long>(() => retval = "BIGINT"), TypeSwitch.Case <decimal>(() => retval = "MONEY"), TypeSwitch.Case <float>(() => retval = "REAL"), TypeSwitch.Case <double>(() => retval = "FLOAT"), TypeSwitch.Case <DateTime>(() => retval = "DATETIME"), TypeSwitch.Case <DateTimeOffset>(() => retval = "DATETIMEOFFSET"), TypeSwitch.Case <Byte[]>(() => retval = "VARBINARY(" + (maxLen ?? "MAX") + ")") ); if (retval == null) { throw new SoftwareException("Unable to convert type '{0}' to sql type.", type); } return(retval); }
public virtual string ConvertTypeToSQLType(Type type, bool preferUnicode = true, string maxLen = "4000") { string retval = null; TypeSwitch.ForType(type, TypeSwitch.Case <Char>(() => retval = preferUnicode ? "NCHAR" : "CHAR"), TypeSwitch.Case <String>(() => retval = preferUnicode ? "NVARCHAR(MAX)" : "VARCHAR(MAX)"), TypeSwitch.Case <Byte>(() => retval = "TINYINT"), TypeSwitch.Case <Boolean>(() => retval = "BIT"), TypeSwitch.Case <Guid>(() => retval = "UNIQUEIDENTIFIER"), TypeSwitch.Case <Int16>(() => retval = "SMALLINT"), TypeSwitch.Case <Int32>(() => retval = "INT"), TypeSwitch.Case <Int64>(() => retval = "BIGINT"), TypeSwitch.Case <Decimal>(() => retval = "MONEY"), TypeSwitch.Case <Single>(() => retval = "REAL"), TypeSwitch.Case <Double>(() => retval = "FLOAT"), TypeSwitch.Case <DateTime>(() => retval = "DATETIME") ); if (retval == null) { throw new SoftwareException("Unable to convert type '{0}' to sql type.", type); } return(retval); }
protected virtual VariableStorageClass TypeToStorageClass(Type type) { var storageClass = VariableStorageClass.Integer; if (type.IsIntegerNumeric()) { storageClass = VariableStorageClass.Integer; } else { TypeSwitch.ForType( type, TypeSwitch.Case <Guid>(() => storageClass = VariableStorageClass.Uuid), TypeSwitch.Case <string>(() => storageClass = VariableStorageClass.Text), TypeSwitch.Case <DateTime>(() => storageClass = VariableStorageClass.DateTime), TypeSwitch.Case <byte[]>(() => storageClass = VariableStorageClass.Blob), TypeSwitch.Default(() => { throw new SoftwareException("Unable to map type to variable storage class '{0}'", type.Name); }) ); } return(storageClass); }