protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
        {
            if (dataType == "NUMBER" && precision > 0 && (scale ?? 0) == 0)
            {
                if (precision < 3)
                {
                    return(typeof(sbyte));
                }
                if (precision < 5)
                {
                    return(typeof(short));
                }
                if (precision < 10)
                {
                    return(typeof(int));
                }
                if (precision < 20)
                {
                    return(typeof(long));
                }
            }

            if (dataType?.StartsWith("TIMESTAMP") == true)
            {
                return(dataType.EndsWith("TIME ZONE") ? typeof(DateTimeOffset) : typeof(DateTime));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options));
        }
Beispiel #2
0
 protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
 {
     return((dataType?.ToLower()) switch
     {
         "tinyint" => typeof(byte),
         _ => base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options),
     });
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale)
        {
            if (dataType != null && columnType != null && columnType.Contains("unsigned"))
            {
                switch (dataType.ToLower())
                {
                case "smallint": return(typeof(ushort));

                case "int":
                case "mediumint": return(typeof(uint));

                case "bigint": return(typeof(ulong));

                case "tiny int": return(typeof(byte));
                }
            }

            switch (dataType)
            {
            case "tinyint":
                if (columnType == "tinyint(1)")
                {
                    return(typeof(bool));
                }
                break;

            case "datetime2": return(typeof(DateTime));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale));
        }
		protected override string? GetDbType(GetSchemaOptions options, string? columnType, DataTypeInfo? dataType, long? length, int? precision, int? scale, string? udtCatalog, string? udtSchema, string? udtName)
		{
			// database name for udt not supported by sql server
			if (udtName != null)
				return (udtSchema != null ? SqlServerTools.QuoteIdentifier(udtSchema) + '.' : null) + SqlServerTools.QuoteIdentifier(udtName);

			return base.GetDbType(options, columnType, dataType, length, precision, scale, udtCatalog, udtSchema, udtName);
		}
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale)
        {
            if (dataType?.ToLowerInvariant() == "tinyint")
            {
                return(typeof(byte));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale));
        }
Beispiel #6
0
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale)
        {
            switch (dataType)
            {
            case "datetime2": return(typeof(DateTime));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale));
        }
Beispiel #7
0
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale)
        {
            switch (dataType?.ToLower())
            {
            case "tinyint": return(typeof(byte));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale));
        }
Beispiel #8
0
        protected virtual Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
        {
            var systemType = dataTypeInfo != null?Type.GetType(dataTypeInfo.DataType) : null;

            if (length == 1 && !GenerateChar1AsString && systemType == typeof(string))
            {
                systemType = typeof(char);
            }

            return(systemType);
        }
Beispiel #9
0
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
        {
            if (dataTypeInfo == null && dataType != null)
            {
                if (dataType.ToLower() == "text")
                {
                    return(length == 1 && !options.GenerateChar1AsString ? typeof(char) : typeof(string));
                }
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options));
        }
Beispiel #10
0
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
        {
            if (dataTypeInfo == null && dataType != null)
            {
                if (dataType.ToLower() == "text")
                {
                    return(typeof(string));
                }
                throw new InvalidOperationException();
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options));
        }
		protected override Type? GetSystemType(string? dataType, string? columnType, DataTypeInfo? dataTypeInfo, long? length, int? precision, int? scale, GetSchemaOptions options)
		{
			switch (dataType)
			{
				case "tinyint"     : return typeof(byte);
				case "hierarchyid" :
				case "geography"   :
				case "geometry"    : return Provider.GetUdtTypeByName(dataType);
				case "table type"  : return typeof(DataTable);
			}

			return base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options);
		}
Beispiel #12
0
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale)
        {
            if (dataTypeInfo == null && dataType != null)
            {
                switch (dataType.ToLower())
                {
                case "text": return(typeof(string));

                default: throw new InvalidOperationException();
                }
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale));
        }
        protected override Type?GetSystemType(string?dataType, string?columnType, DataTypeInfo?dataTypeInfo, long?length, int?precision, int?scale, GetSchemaOptions options)
        {
            switch (dataType)
            {
            case "TINYINT":
                return(typeof(byte));

            case "ST_GEOMETRY":
            case "ST_GEOMETRYCOLLECTION":
            case "ST_POINT":
            case "ST_MULTIPOINT":
            case "ST_LINESTRING":
            case "ST_MULTILINESTRING":
            case "ST_POLYGON":
            case "ST_MULTIPOLYGON":
            case "ST_CIRCULARSTRING":
                return(typeof(byte[]));
            }

            return(base.GetSystemType(dataType, columnType, dataTypeInfo, length, precision, scale, options));
        }
        protected override string?GetDbType(GetSchemaOptions options, string?columnType, DataTypeInfo?dataType, long?length, int?prec, int?scale, string?udtCatalog, string?udtSchema, string?udtName)
        {
            // database name for udt not supported by sql server
            if (udtName != null)
            {
                return((udtSchema != null ? Provider.Adapter.QuoteIdentifier(udtSchema) + '.' : null) + Provider.Adapter.QuoteIdentifier(udtName));
            }

            return(base.GetDbType(options, columnType, dataType, length, prec, scale, udtCatalog, udtSchema, udtName));
        }
Beispiel #15
0
        protected override string?GetDbType(GetSchemaOptions options, string?columnType, DataTypeInfo?dataType, long?length, int?prec, int?scale, string?udtCatalog, string?udtSchema, string?udtName)
        {
            switch (columnType)
            {
            case "NUMBER":
                if (prec == 0)
                {
                    return(columnType);
                }
                break;
            }

            return(base.GetDbType(options, columnType, dataType, length, prec, scale, udtCatalog, udtSchema, udtName));
        }
        protected override string?GetDbType(GetSchemaOptions options, string?columnType, DataTypeInfo?dataType, long?length, int?precision, int?scale, string?udtCatalog, string?udtSchema, string?udtName)
        {
            var dbType = columnType;

            if (dataType != null)
            {
                var parms = dataType.CreateParameters;

                if (!parms.IsNullOrWhiteSpace())
                {
                    var paramNames  = parms.Split(',');
                    var paramValues = new object?[paramNames.Length];

                    for (var i = 0; i < paramNames.Length; i++)
                    {
                        switch (paramNames[i].Trim().ToLower())
                        {
                        case "length": paramValues[i] = length; break;

                        case "precision": paramValues[i] = precision; break;

                        case "scale": paramValues[i] = scale; break;
                        }
                    }

                    if (paramValues.All(v => v != null))
                    {
                        var format = $"{dbType}({string.Join(", ", Enumerable.Range(0, paramValues.Length).Select(i => $"{{{i}}}"))})";
                        dbType = string.Format(format, paramValues);
                    }
                }
            }

            return(dbType);
        }
Beispiel #17
0
        protected virtual string?GetDbType(GetSchemaOptions options, string?columnType, DataTypeInfo?dataType, long?length, int?prec, int?scale, string?udtCatalog, string?udtSchema, string?udtName)
        {
            var dbType = columnType;

            if (dataType != null)
            {
                var format = dataType.CreateFormat;
                var parms  = dataType.CreateParameters;

                if (!string.IsNullOrWhiteSpace(format) && !parms.IsNullOrWhiteSpace())
                {
                    var paramNames  = parms.Split(',');
                    var paramValues = new object?[paramNames.Length];

                    for (var i = 0; i < paramNames.Length; i++)
                    {
                        switch (paramNames[i].Trim().ToLower())
                        {
                        case "size":
                        case "length": paramValues[i] = length; break;

                        case "max length": paramValues[i] = length == int.MaxValue ? "max" : length?.ToString(); break;

                        case "precision": paramValues[i] = prec;   break;

                        case "scale": paramValues[i] = scale.HasValue || paramNames.Length == 2 ? scale : prec; break;
                        }
                    }

                    if (paramValues.All(v => v != null))
                    {
                        dbType = string.Format(format, paramValues);
                    }
                }
            }

            return(dbType);
        }