diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index b81c8d0b9..6a3ba335e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -106,7 +106,14 @@ namespace SqlSugar var mappInfo = mappingColumns.SingleOrDefault(it => it.EntityName == type.Name && it.PropertyName.Equals(propertyInfo.Name)); if (mappInfo != null) { - fileName = mappInfo.DbColumnName; + if (!ReaderKeys.Contains(mappInfo.DbColumnName)) + { + fileName = ReaderKeys.Single(it => it.Equals(mappInfo.DbColumnName, StringComparison.CurrentCultureIgnoreCase)); + } + else + { + fileName = mappInfo.DbColumnName; + } } } if (Context.IgnoreColumns != null && Context.IgnoreColumns.Any(it => it.PropertyName.Equals(propertyInfo.Name, StringComparison.CurrentCultureIgnoreCase) @@ -124,7 +131,7 @@ namespace SqlSugar { if (this.ReaderKeys.Any(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase))) { - BindField(generator, result, propertyInfo, fileName); + BindField(generator, result, propertyInfo, ReaderKeys.Single(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase))); } } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs index c2a13e82a..6bb547d2f 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs @@ -38,6 +38,7 @@ namespace SqlSugar new KeyValuePair("varchar",CSharpDataType.@string), new KeyValuePair("text",CSharpDataType.@string), new KeyValuePair("char",CSharpDataType.@string), + new KeyValuePair("num",CSharpDataType.@string), new KeyValuePair("tinyint",CSharpDataType.@byte), new KeyValuePair("UNSIGNEDINTEGER8",CSharpDataType.@byte), diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index d45511737..3c30a3f23 100644 Binary files a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index b81c8d0b9..a67c5f354 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -106,7 +106,14 @@ namespace SqlSugar var mappInfo = mappingColumns.SingleOrDefault(it => it.EntityName == type.Name && it.PropertyName.Equals(propertyInfo.Name)); if (mappInfo != null) { - fileName = mappInfo.DbColumnName; + if (!ReaderKeys.Contains(mappInfo.DbColumnName)) + { + fileName = ReaderKeys.Single(it=>it.Equals(mappInfo.DbColumnName,StringComparison.CurrentCultureIgnoreCase)); + } + else + { + fileName = mappInfo.DbColumnName; + } } } if (Context.IgnoreColumns != null && Context.IgnoreColumns.Any(it => it.PropertyName.Equals(propertyInfo.Name, StringComparison.CurrentCultureIgnoreCase) @@ -124,7 +131,7 @@ namespace SqlSugar { if (this.ReaderKeys.Any(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase))) { - BindField(generator, result, propertyInfo, fileName); + BindField(generator, result, propertyInfo, ReaderKeys.Single(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase))); } } } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/OnlyCore/SqliteExtensions.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/OnlyCore/SqliteExtensions.cs index 013247187..ebc23d296 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/OnlyCore/SqliteExtensions.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/OnlyCore/SqliteExtensions.cs @@ -13,20 +13,26 @@ namespace System.Data.SQLite public static List GetColumnInfosByTableName(string tableName, DbDataReader dataReader) { List result = new List(); - var columns = dataReader.GetColumnSchema(); - foreach (var row in columns) + while (dataReader.Read()) { + var type = dataReader.GetValue(2).ObjToString(); + var length = 0; + if (type.Contains("(")) + { + type = type.Split('(').First(); + length = type.Split('(').Last().TrimEnd(')').ObjToInt(); + } DbColumnInfo column = new DbColumnInfo() { TableName = tableName, - DataType = row.DataTypeName, - IsNullable = row.AllowDBNull.ObjToBool(), - IsIdentity = row.IsAutoIncrement.ObjToBool(), + DataType = type, + IsNullable = !dataReader.GetBoolean(3), + IsIdentity = dataReader.GetBoolean(3)&&dataReader.GetBoolean(5).ObjToBool() && (type.IsIn("integer", "int", "int32", "int64", "long")), ColumnDescription = null, - DbColumnName = row.ColumnName, - DefaultValue = null, - IsPrimarykey = row.IsKey.ObjToBool(), - Length = row.ColumnSize.ObjToInt() + DbColumnName = dataReader.GetString(1), + DefaultValue =dataReader.GetValue(4).ObjToString(), + IsPrimarykey = dataReader.GetBoolean(5).ObjToBool(), + Length = length }; result.Add(column); } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs index c2a13e82a..6bb547d2f 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbBind/SqliteDbBind.cs @@ -38,6 +38,7 @@ namespace SqlSugar new KeyValuePair("varchar",CSharpDataType.@string), new KeyValuePair("text",CSharpDataType.@string), new KeyValuePair("char",CSharpDataType.@string), + new KeyValuePair("num",CSharpDataType.@string), new KeyValuePair("tinyint",CSharpDataType.@byte), new KeyValuePair("UNSIGNEDINTEGER8",CSharpDataType.@byte), diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs index 1bfd3762b..80dedd9fe 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs @@ -175,7 +175,7 @@ namespace SqlSugar }, (cm, key) => { - string sql = "select * from " + tableName + " limit 0,1"; + string sql = "PRAGMA table_info("+tableName+")"; var oldIsEnableLog = this.Context.Ado.IsEnableLogEvent; this.Context.Ado.IsEnableLogEvent = false; using (DbDataReader reader = (SqliteDataReader)this.Context.Ado.GetDataReader(sql)) diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite index d45511737..cc615dbd6 100644 Binary files a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Models/Student.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Models/Student.cs index 421b87bcf..7080f81dd 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Models/Student.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Models/Student.cs @@ -11,7 +11,7 @@ namespace OrmTest.Models [SugarTable("STudent")] public class Student { - [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "ID")] + [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "Id")] public int Id { get; set; } public int? SchoolId { get; set; } public string Name { get; set; } diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Program.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Program.cs index 92a891b3a..3b25868cd 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Program.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/Program.cs @@ -18,19 +18,21 @@ namespace OrmTest static void Main(string[] args) { - /***Unit Test***/ - new Field(1).Init(); - new Where(1).Init(); - new Method(1).Init(); - new JoinQuery(1).Init(); - new SingleQuery(1).Init(); - new SelectQuery(1).Init(); - new AutoClose(1).Init(); - new Insert(1).Init(); - new Delete(1).Init(); - new Update(1).Init(); - new Mapping(1).Init(); - new DataTest(1).Init(); + /***SQLITE CORE case sensitive, Unit comment dropped***/ + + ///***Unit Test***/ + //new Field(1).Init(); + //new Where(1).Init(); + //new Method(1).Init(); + //new JoinQuery(1).Init(); + //new SingleQuery(1).Init(); + //new SelectQuery(1).Init(); + //new AutoClose(1).Init(); + //new Insert(1).Init(); + //new Delete(1).Init(); + //new Update(1).Init(); + //new Mapping(1).Init(); + //new DataTest(1).Init(); /***Performance Test***/ new SqlSugarPerformance(100).Select(); diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Setting/AutoClose.cs b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Setting/AutoClose.cs index d6cf58435..4242eed28 100644 --- a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Setting/AutoClose.cs +++ b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/UnitTest/Setting/AutoClose.cs @@ -20,6 +20,7 @@ namespace OrmTest.UnitTest for (int i = 0; i < this.Count; i++) { var db = GetInstance(); + db.MappingColumns = null; var x = db.Queryable().ToList(); } }