diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/Private.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/Private.cs index bda83a193..0b6dc0dca 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/Private.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/Private.cs @@ -125,11 +125,11 @@ namespace SqlSugar var tempColumns = tempDataTable.Columns.Cast().Select(it=>it.ColumnName); columns = columns.Where(it => tempColumns.Any(s => s.EqualCase(it.DbColumnName))).ToList(); } - var (isDiscrimator, discrimatorDict) = GetDiscrimator(); + MyTuple myTuple = GetDiscrimator(); - if (isDiscrimator && discrimatorDict?.Count > 0) + if (myTuple.isDiscrimator && myTuple.discrimatorDict?.Count > 0) { - foreach (var dict in discrimatorDict) + foreach (var dict in myTuple.discrimatorDict) { if (!dt.Columns.Contains(dict.Key)) dt.Columns.Add(dict.Key); @@ -199,9 +199,9 @@ namespace SqlSugar } dr[name] = value; } - if (isDiscrimator && discrimatorDict?.Count > 0) + if (myTuple.isDiscrimator && myTuple.discrimatorDict?.Count > 0) { - foreach (var dict in discrimatorDict) + foreach (var dict in myTuple.discrimatorDict) { var key = dict.Key; var val = dict.Value; if (!string.IsNullOrWhiteSpace(val) && string.IsNullOrWhiteSpace(dr[key] + "")) @@ -393,7 +393,7 @@ namespace SqlSugar } } - private (bool isDiscrimator, Dictionary discrimatorDict) GetDiscrimator() + private MyTuple GetDiscrimator() { var isDiscrimator = entityInfo.Discrimator.HasValue(); var dict = new Dictionary(); @@ -405,12 +405,24 @@ namespace SqlSugar { var name = disItem.Split(':').First(); var value = disItem.Split(':').Last(); - dict.TryAdd(name, value); + if(!dict.ContainsKey(name)) + dict.Add(name, value); } - } - - return (isDiscrimator, dict); + } + return new MyTuple(isDiscrimator, dict); } } + + internal class MyTuple + { + public bool isDiscrimator; + public Dictionary discrimatorDict; + + public MyTuple(bool isDiscrimator, Dictionary dict) + { + this.isDiscrimator = isDiscrimator; + this.discrimatorDict = dict; + } + } } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs index c56a76726..cfb72be0f 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs @@ -312,14 +312,14 @@ namespace SqlSugar { hasNolock = true; } - var result = it.GetValue(it.Expression); - var isJoin = (it is SubLeftJoin || it is SubInnerJoin); + var innerResult = it.GetValue(it.Expression); + var innerIsJoin = (it is SubLeftJoin || it is SubInnerJoin); var isSqlServer =UtilMethods.GetDatabaseType(this.context) == DbType.SqlServer; - if (hasNolock && isJoin&& isSqlServer) + if (hasNolock && innerIsJoin&& isSqlServer) { - result = result.Replace("] ON (", "] " + SqlWith.NoLock + " ON ("); + innerResult = innerResult.Replace("] ON (", "] " + SqlWith.NoLock + " ON ("); } - return result; + return innerResult; }).ToList(); if (this.context?.SugarContext?.Context?.CurrentConnectionConfig?.DbType == DbType.Oracle && isubList.Any(s => s is SubSelect) && isubList.Any(s => s is SubOrderBy || s is SubOrderByDesc)) {