Synchronous code

This commit is contained in:
sunkaixuan
2025-10-25 14:07:07 +08:00
parent 976d2802e5
commit e23b8ad11f
2 changed files with 27 additions and 15 deletions

View File

@@ -125,11 +125,11 @@ namespace SqlSugar
var tempColumns = tempDataTable.Columns.Cast<DataColumn>().Select(it=>it.ColumnName); var tempColumns = tempDataTable.Columns.Cast<DataColumn>().Select(it=>it.ColumnName);
columns = columns.Where(it => tempColumns.Any(s => s.EqualCase(it.DbColumnName))).ToList(); 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)) if (!dt.Columns.Contains(dict.Key))
dt.Columns.Add(dict.Key); dt.Columns.Add(dict.Key);
@@ -199,9 +199,9 @@ namespace SqlSugar
} }
dr[name] = value; 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; var key = dict.Key; var val = dict.Value;
if (!string.IsNullOrWhiteSpace(val) && string.IsNullOrWhiteSpace(dr[key] + "")) if (!string.IsNullOrWhiteSpace(val) && string.IsNullOrWhiteSpace(dr[key] + ""))
@@ -393,7 +393,7 @@ namespace SqlSugar
} }
} }
private (bool isDiscrimator, Dictionary<string, string> discrimatorDict) GetDiscrimator() private MyTuple GetDiscrimator()
{ {
var isDiscrimator = entityInfo.Discrimator.HasValue(); var isDiscrimator = entityInfo.Discrimator.HasValue();
var dict = new Dictionary<string, string>(); var dict = new Dictionary<string, string>();
@@ -405,12 +405,24 @@ namespace SqlSugar
{ {
var name = disItem.Split(':').First(); var name = disItem.Split(':').First();
var value = disItem.Split(':').Last(); var value = disItem.Split(':').Last();
dict.TryAdd(name, value); if(!dict.ContainsKey(name))
dict.Add(name, value);
} }
} }
return new MyTuple(isDiscrimator, dict);
}
return (isDiscrimator, dict);
} }
internal class MyTuple
{
public bool isDiscrimator;
public Dictionary<string, string> discrimatorDict;
public MyTuple(bool isDiscrimator, Dictionary<string, string> dict)
{
this.isDiscrimator = isDiscrimator;
this.discrimatorDict = dict;
}
} }
} }

View File

@@ -312,14 +312,14 @@ namespace SqlSugar
{ {
hasNolock = true; hasNolock = true;
} }
var result = it.GetValue(it.Expression); var innerResult = it.GetValue(it.Expression);
var isJoin = (it is SubLeftJoin || it is SubInnerJoin); var innerIsJoin = (it is SubLeftJoin || it is SubInnerJoin);
var isSqlServer =UtilMethods.GetDatabaseType(this.context) == DbType.SqlServer; 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(); }).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)) if (this.context?.SugarContext?.Context?.CurrentConnectionConfig?.DbType == DbType.Oracle && isubList.Any(s => s is SubSelect) && isubList.Any(s => s is SubOrderBy || s is SubOrderByDesc))
{ {