From bd1aa6b0701f122152f4251259c066de691b2f86 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Thu, 23 Dec 2021 13:49:32 +0800 Subject: [PATCH] Synchronizing --- .../Abstract/DbBindProvider/DbBindAccessory.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs index 2d1df66ba..f89055c6f 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs @@ -13,8 +13,9 @@ namespace SqlSugar protected List GetEntityList(SqlSugarProvider context, IDataReader dataReader) { Type type = typeof(T); - var fieldNames = GetDataReaderNames(dataReader); - string cacheKey = GetCacheKey(type,fieldNames); + string types = null; + var fieldNames = GetDataReaderNames(dataReader,ref types); + string cacheKey = GetCacheKey(type,fieldNames) + types; IDataReaderEntityBuilder entytyList = context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, () => { var cacheResult = new IDataReaderEntityBuilder(context, dataReader,fieldNames).CreateBuilder(type); @@ -38,8 +39,9 @@ namespace SqlSugar protected async Task> GetEntityListAsync(SqlSugarProvider context, IDataReader dataReader) { Type type = typeof(T); - var fieldNames = GetDataReaderNames(dataReader); - string cacheKey = GetCacheKey(type, fieldNames); + string types = null; + var fieldNames = GetDataReaderNames(dataReader,ref types); + string cacheKey = GetCacheKey(type, fieldNames)+types; IDataReaderEntityBuilder entytyList = context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, () => { var cacheResult = new IDataReaderEntityBuilder(context, dataReader, fieldNames).CreateBuilder(type); @@ -73,14 +75,18 @@ namespace SqlSugar return sb.ToString(); } - private List GetDataReaderNames(IDataReader dataReader) + private List GetDataReaderNames(IDataReader dataReader,ref string types) { List keys = new List(); + StringBuilder sbTypes = new StringBuilder(); var count = dataReader.FieldCount; for (int i = 0; i < count; i++) { keys.Add(dataReader.GetName(i)); + var type = dataReader.GetFieldType(i); + sbTypes.Append(type.Name.Substring(0,2)); } + types = sbTypes.ToString(); return keys; }