using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace SqlSugar.BzTDengineCore { public class TDengineDbBind : DbBindProvider { public override string GetDbTypeName(string csharpTypeName) { if (csharpTypeName == UtilConstants.ByteArrayType.Name) return "bytea"; if (csharpTypeName.ToLower() == "int32") csharpTypeName = "int"; if (csharpTypeName.ToLower() == "int16") csharpTypeName = "short"; if (csharpTypeName.ToLower() == "int64") csharpTypeName = "long"; if (csharpTypeName.ToLower().IsIn("boolean", "bool")) csharpTypeName = "bool"; if (csharpTypeName == "DateTimeOffset") csharpTypeName = "DateTime"; var mappings = MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase)).ToList(); if (mappings != null && mappings.Count > 0) return mappings.First().Key; else return "varchar"; } public override string GetPropertyTypeName(string dbTypeName) { if (dbTypeName.ToLower() == "int32") { dbTypeName = "int"; } else if (dbTypeName.ToLower() == "int16") { dbTypeName = "short"; } else if (dbTypeName.ToLower() == "int64") { dbTypeName = "long"; } else if (dbTypeName.ToLower() == "string") { dbTypeName = "string"; } else if (dbTypeName.ToLower() == "boolean") { dbTypeName = "bool"; } else if (dbTypeName.ToLower() == "sbyte") { dbTypeName = "sbyte"; } else if (dbTypeName.ToLower() == "double") { dbTypeName = "double"; } return dbTypeName; } public override List> MappingTypes { get { var extService = Context.CurrentConnectionConfig.ConfigureExternalServices; if (extService != null && extService.AppendDataReaderTypeMappings.HasValue()) { return extService.AppendDataReaderTypeMappings.Union(MappingTypesConst).ToList(); } else { return MappingTypesConst; } } } public static List> MappingTypesConst = new List>(){ new KeyValuePair("BOOL",CSharpDataType.@bool), new KeyValuePair("TINYINT",CSharpDataType.@byte), new KeyValuePair("SMALLINT",CSharpDataType.@short), new KeyValuePair("INT",CSharpDataType.@int), new KeyValuePair("BIGINT",CSharpDataType.@long), new KeyValuePair("TINYINT UNSIGNED",CSharpDataType.@byte), new KeyValuePair("SMALLINT UNSIGNED",CSharpDataType.@short), new KeyValuePair("INT UNSIGNED",CSharpDataType.@int), new KeyValuePair("BIGINT UNSIGNED",CSharpDataType.@long), new KeyValuePair("FLOAT",CSharpDataType.Single), new KeyValuePair("DOUBLE",CSharpDataType.@double), new KeyValuePair("float8",CSharpDataType.@double), new KeyValuePair("BINARY",CSharpDataType.@string), new KeyValuePair("TIMESTAMP",CSharpDataType.DateTime), new KeyValuePair("NCHAR",CSharpDataType.@string), new KeyValuePair("JSON",CSharpDataType.@string) }; public override List StringThrow { get { return new List() { "int32", "datetime", "decimal", "double", "byte" }; } } } }