From a645f815dbfb1adfb192e45eac80a59f6fade9bf Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 26 Mar 2023 12:46:10 +0800 Subject: [PATCH] Performance optimization --- .../UpdateProvider/UpdateableHelper.cs | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs index 10f08fb68..3fad2a627 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs @@ -402,21 +402,9 @@ namespace SqlSugar if (item.IsArray) { parameter.IsArray = true; - if (item.PropertyType.IsIn(typeof(Guid[]), typeof(Guid?[]))) + if (parameter.Value == null || parameter.Value == DBNull.Value) { - parameter.DbType = System.Data.DbType.Guid; - } - else if (item.PropertyType.IsIn(typeof(int[]), typeof(int?[]))) - { - parameter.DbType = System.Data.DbType.Int32; - } - else if (item.PropertyType.IsIn(typeof(long[]), typeof(long?[]))) - { - parameter.DbType = System.Data.DbType.Int64; - } - else if (item.PropertyType.IsIn(typeof(short[]), typeof(short?[]))) - { - parameter.DbType = System.Data.DbType.Int16; + ArrayNull(item, parameter); } } if (item.Value == null && isDic) @@ -462,6 +450,27 @@ namespace SqlSugar this.UpdateBuilder.Parameters.RemoveAll(it => this.UpdateBuilder.SetValues.Any(v => (SqlBuilder.SqlParameterKeyWord + SqlBuilder.GetNoTranslationColumnName(v.Key)) == it.ParameterName)); } } + + private static void ArrayNull(DbColumnInfo item, SugarParameter parameter) + { + if (item.PropertyType.IsIn(typeof(Guid[]), typeof(Guid?[]))) + { + parameter.DbType = System.Data.DbType.Guid; + } + else if (item.PropertyType.IsIn(typeof(int[]), typeof(int?[]))) + { + parameter.DbType = System.Data.DbType.Int32; + } + else if (item.PropertyType.IsIn(typeof(long[]), typeof(long?[]))) + { + parameter.DbType = System.Data.DbType.Int64; + } + else if (item.PropertyType.IsIn(typeof(short[]), typeof(short?[]))) + { + parameter.DbType = System.Data.DbType.Int16; + } + } + private string GetDbColumnName(string propertyName) { if (!IsMappingColumns)