mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-09 02:44:58 +08:00
Synchronous code
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user