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);
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<string, string> discrimatorDict) GetDiscrimator()
private MyTuple GetDiscrimator()
{
var isDiscrimator = entityInfo.Discrimator.HasValue();
var dict = new Dictionary<string, string>();
@@ -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<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;
}
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))
{