mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-25 01:14:33 +08:00
Update Core
This commit is contained in:
parent
2ad218a5ca
commit
e66bbe0653
@ -391,6 +391,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Async();
|
||||||
InitParameters(ref sql, parameters);
|
InitParameters(ref sql, parameters);
|
||||||
if (FormatSql != null)
|
if (FormatSql != null)
|
||||||
sql = FormatSql(sql);
|
sql = FormatSql(sql);
|
||||||
@ -422,6 +423,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Async();
|
||||||
InitParameters(ref sql, parameters);
|
InitParameters(ref sql, parameters);
|
||||||
if (FormatSql != null)
|
if (FormatSql != null)
|
||||||
sql = FormatSql(sql);
|
sql = FormatSql(sql);
|
||||||
@ -452,6 +454,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Async();
|
||||||
InitParameters(ref sql, parameters);
|
InitParameters(ref sql, parameters);
|
||||||
if (FormatSql != null)
|
if (FormatSql != null)
|
||||||
sql = FormatSql(sql);
|
sql = FormatSql(sql);
|
||||||
@ -482,6 +485,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public virtual Task<DataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters)
|
public virtual Task<DataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters)
|
||||||
{
|
{
|
||||||
|
Async();
|
||||||
//False asynchrony . No Support DataSet
|
//False asynchrony . No Support DataSet
|
||||||
return Task.FromResult(GetDataSetAll(sql, parameters));
|
return Task.FromResult(GetDataSetAll(sql, parameters));
|
||||||
}
|
}
|
||||||
@ -1152,17 +1156,13 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper
|
#region Helper
|
||||||
//private static void NextResult(IDataReader dataReader)
|
private void Async()
|
||||||
//{
|
{
|
||||||
// try
|
if (this.Context.Root != null & this.Context.Root.AsyncId == null)
|
||||||
// {
|
{
|
||||||
// NextResult(dataReader);
|
this.Context.Root.AsyncId = Guid.NewGuid(); ;
|
||||||
// }
|
}
|
||||||
// catch
|
}
|
||||||
// {
|
|
||||||
// // Check.Exception(true, ErrorMessage.GetThrowMessage("Please reduce the number of T. Save Queue Changes queries don't have so many results", "请减少T的数量,SaveQueueChanges 查询没有这么多结果"));
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
private static bool NextResult(IDataReader dataReader)
|
private static bool NextResult(IDataReader dataReader)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -184,7 +184,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
using (dataReader)
|
using (dataReader)
|
||||||
{
|
{
|
||||||
if (type.Name.Contains("KeyValuePair"))
|
if (type.Name.StartsWith("KeyValuePair"))
|
||||||
{
|
{
|
||||||
return GetKeyValueList<T>(type, dataReader);
|
return GetKeyValueList<T>(type, dataReader);
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
using (dataReader)
|
using (dataReader)
|
||||||
{
|
{
|
||||||
if (type.Name.Contains("KeyValuePair"))
|
if (type.Name.StartsWith("KeyValuePair"))
|
||||||
{
|
{
|
||||||
return await GetKeyValueListAsync<T>(type, dataReader);
|
return await GetKeyValueListAsync<T>(type, dataReader);
|
||||||
}
|
}
|
||||||
@ -226,7 +226,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public virtual List<T> DataReaderToListNoUsing<T>(Type type, IDataReader dataReader)
|
public virtual List<T> DataReaderToListNoUsing<T>(Type type, IDataReader dataReader)
|
||||||
{
|
{
|
||||||
if (type.Name.Contains("KeyValuePair"))
|
if (type.Name.StartsWith("KeyValuePair"))
|
||||||
{
|
{
|
||||||
return GetKeyValueList<T>(type, dataReader);
|
return GetKeyValueList<T>(type, dataReader);
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public virtual Task<List<T>> DataReaderToListNoUsingAsync<T>(Type type, IDataReader dataReader)
|
public virtual Task<List<T>> DataReaderToListNoUsingAsync<T>(Type type, IDataReader dataReader)
|
||||||
{
|
{
|
||||||
if (type.Name.Contains("KeyValuePair"))
|
if (type.Name.StartsWith("KeyValuePair"))
|
||||||
{
|
{
|
||||||
return GetKeyValueListAsync<T>(type, dataReader);
|
return GetKeyValueListAsync<T>(type, dataReader);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ namespace SqlSugar
|
|||||||
_Context = value;
|
_Context = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public SqlSugarClient Root { get; set; }
|
||||||
public ConnectionConfig CurrentConnectionConfig { get; set; }
|
public ConnectionConfig CurrentConnectionConfig { get; set; }
|
||||||
public Dictionary<string, object> TempItems { get { if (_TempItems == null) { _TempItems = new Dictionary<string, object>(); } return _TempItems; } set { _TempItems = value; } }
|
public Dictionary<string, object> TempItems { get { if (_TempItems == null) { _TempItems = new Dictionary<string, object>(); } return _TempItems; } set { _TempItems = value; } }
|
||||||
public bool IsSystemTablesConfig { get { return this.CurrentConnectionConfig.InitKeyType == InitKeyType.SystemTable; } }
|
public bool IsSystemTablesConfig { get { return this.CurrentConnectionConfig.InitKeyType == InitKeyType.SystemTable; } }
|
||||||
|
@ -33,6 +33,7 @@ namespace SqlSugar
|
|||||||
public bool IsEnableDiffLogEvent { get; set; }
|
public bool IsEnableDiffLogEvent { get; set; }
|
||||||
public DiffLogModel diffModel { get; set; }
|
public DiffLogModel diffModel { get; set; }
|
||||||
private Action RemoveCacheFunc { get; set; }
|
private Action RemoveCacheFunc { get; set; }
|
||||||
|
private int SetColumnsIndex { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Core
|
#region Core
|
||||||
@ -230,6 +231,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
this.UpdateBuilder.DbColumnInfoList = UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull==false&&IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
this.UpdateBuilder.DbColumnInfoList = UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull==false&&IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
||||||
CheckTranscodeing();
|
CheckTranscodeing();
|
||||||
|
AppendSets();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,10 +246,10 @@ namespace SqlSugar
|
|||||||
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
||||||
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
||||||
|
AppendSets();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
|
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
if (isUpdateColumns)
|
if (isUpdateColumns)
|
||||||
@ -372,6 +374,17 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper
|
#region Helper
|
||||||
|
private void AppendSets()
|
||||||
|
{
|
||||||
|
if (SetColumnsIndex > 0)
|
||||||
|
{
|
||||||
|
var keys = UpdateBuilder.SetValues.Select(it => SqlBuilder.GetNoTranslationColumnName(it.Key.ToLower())).ToList();
|
||||||
|
var addKeys = keys.Where(k => !this.UpdateBuilder.DbColumnInfoList.Any(it => it.PropertyName.ToLower() == k || it.DbColumnName.ToLower() == k)).ToList();
|
||||||
|
var addItems = this.EntityInfo.Columns.Where(it =>!GetPrimaryKeys().Any(p=>p.ToLower()==it.PropertyName?.ToLower()|| p.ToLower() == it.DbColumnName?.ToLower()) && addKeys.Any(k => it.PropertyName?.ToLower() == k || it.DbColumnName?.ToLower() == k)).ToList();
|
||||||
|
this.UpdateBuilder.DbColumnInfoList.AddRange(addItems.Select(it => new DbColumnInfo() { PropertyName = it.PropertyName, DbColumnName = it.DbColumnName }));
|
||||||
|
}
|
||||||
|
SetColumnsIndex++;
|
||||||
|
}
|
||||||
private string _ExecuteCommand()
|
private string _ExecuteCommand()
|
||||||
{
|
{
|
||||||
PreToSql();
|
PreToSql();
|
||||||
|
@ -95,9 +95,16 @@ namespace SqlSugar
|
|||||||
var isProperty = memberExpr.Member.MemberType == MemberTypes.Property;
|
var isProperty = memberExpr.Member.MemberType == MemberTypes.Property;
|
||||||
var isField = memberExpr.Member.MemberType == MemberTypes.Field;
|
var isField = memberExpr.Member.MemberType == MemberTypes.Field;
|
||||||
if (isProperty)
|
if (isProperty)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
reval = GetPropertyValue(memberExpr);
|
reval = GetPropertyValue(memberExpr);
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
reval = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (isField)
|
else if (isField)
|
||||||
{
|
{
|
||||||
reval = GetFiledValue(memberExpr);
|
reval = GetFiledValue(memberExpr);
|
||||||
|
@ -109,6 +109,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (IsConst(item)&&IsConvert(item)&&UtilMethods.IsNullable(item.Type) && UtilMethods.GetUnderType(item.Type)==UtilConstants.BoolType)
|
else if (IsConst(item)&&IsConvert(item)&&UtilMethods.IsNullable(item.Type) && UtilMethods.GetUnderType(item.Type)==UtilConstants.BoolType)
|
||||||
{
|
{
|
||||||
|
item = (item as UnaryExpression).Operand;
|
||||||
parameter.Context.Result.Append(base.Context.GetEqString(memberName, GetNewExpressionValue(item)));
|
parameter.Context.Result.Append(base.Context.GetEqString(memberName, GetNewExpressionValue(item)));
|
||||||
}
|
}
|
||||||
else if (IsConst(item))
|
else if (IsConst(item))
|
||||||
|
@ -22,6 +22,8 @@ namespace SqlSugar
|
|||||||
private MappingColumnList _MappingColumns;
|
private MappingColumnList _MappingColumns;
|
||||||
private IgnoreColumnList _IgnoreColumns;
|
private IgnoreColumnList _IgnoreColumns;
|
||||||
private IgnoreColumnList _IgnoreInsertColumns;
|
private IgnoreColumnList _IgnoreInsertColumns;
|
||||||
|
internal Guid? AsyncId { get; set; }
|
||||||
|
internal bool? IsSingleInstance { get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -671,16 +673,44 @@ namespace SqlSugar
|
|||||||
#region Helper
|
#region Helper
|
||||||
private SqlSugarProvider GetContext()
|
private SqlSugarProvider GetContext()
|
||||||
{
|
{
|
||||||
|
SqlSugarProvider result = null;
|
||||||
if (IsSameThreadAndShard())
|
if (IsSameThreadAndShard())
|
||||||
return SameThreadAndShard();
|
{
|
||||||
|
result = SameThreadAndShard();
|
||||||
|
}
|
||||||
else if (IsNoSameThreadAndShard())
|
else if (IsNoSameThreadAndShard())
|
||||||
return NoSameThreadAndShard();
|
{
|
||||||
|
result = NoSameThreadAndShard();
|
||||||
|
}
|
||||||
else if (IsSynchronization())
|
else if (IsSynchronization())
|
||||||
return Synchronization();
|
{
|
||||||
|
result = Synchronization();
|
||||||
|
}
|
||||||
|
else if (IsSingleInstanceAsync())
|
||||||
|
{
|
||||||
|
result = NoSameThreadAsync();
|
||||||
|
}
|
||||||
|
else if (IsAsync())
|
||||||
|
{
|
||||||
|
result = Synchronization();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return NoSameThread();
|
{
|
||||||
|
IsSingleInstance = true;
|
||||||
|
result = NoSameThread();
|
||||||
|
}
|
||||||
|
if (result.Root == null)
|
||||||
|
{
|
||||||
|
result.Root = this;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SqlSugarProvider NoSameThreadAsync()
|
||||||
|
{
|
||||||
|
var result = GetCallContext();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
private SqlSugarProvider NoSameThread()
|
private SqlSugarProvider NoSameThread()
|
||||||
{
|
{
|
||||||
if (CallContext.ContextList.Value == null)
|
if (CallContext.ContextList.Value == null)
|
||||||
@ -761,6 +791,15 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsAsync()
|
||||||
|
{
|
||||||
|
return AsyncId != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsSingleInstanceAsync()
|
||||||
|
{
|
||||||
|
return IsSingleInstance == true && AsyncId != null;
|
||||||
|
}
|
||||||
|
|
||||||
private bool IsSynchronization()
|
private bool IsSynchronization()
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>sqlSugarCore</id>
|
<id>sqlSugarCore</id>
|
||||||
<version>5.0.0.7</version>
|
<version>5.0.0.8</version>
|
||||||
<authors>sunkaixuan</authors>
|
<authors>sunkaixuan</authors>
|
||||||
<owners>Landa</owners>
|
<owners>Landa</owners>
|
||||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||||
|
Loading…
Reference in New Issue
Block a user