mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Update Core
This commit is contained in:
parent
2ad218a5ca
commit
e66bbe0653
@ -391,6 +391,7 @@ namespace SqlSugar
|
||||
{
|
||||
try
|
||||
{
|
||||
Async();
|
||||
InitParameters(ref sql, parameters);
|
||||
if (FormatSql != null)
|
||||
sql = FormatSql(sql);
|
||||
@ -422,6 +423,7 @@ namespace SqlSugar
|
||||
{
|
||||
try
|
||||
{
|
||||
Async();
|
||||
InitParameters(ref sql, parameters);
|
||||
if (FormatSql != null)
|
||||
sql = FormatSql(sql);
|
||||
@ -452,6 +454,7 @@ namespace SqlSugar
|
||||
{
|
||||
try
|
||||
{
|
||||
Async();
|
||||
InitParameters(ref sql, parameters);
|
||||
if (FormatSql != null)
|
||||
sql = FormatSql(sql);
|
||||
@ -482,6 +485,7 @@ namespace SqlSugar
|
||||
}
|
||||
public virtual Task<DataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters)
|
||||
{
|
||||
Async();
|
||||
//False asynchrony . No Support DataSet
|
||||
return Task.FromResult(GetDataSetAll(sql, parameters));
|
||||
}
|
||||
@ -1152,17 +1156,13 @@ namespace SqlSugar
|
||||
#endregion
|
||||
|
||||
#region Helper
|
||||
//private static void NextResult(IDataReader dataReader)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// NextResult(dataReader);
|
||||
// }
|
||||
// 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 void Async()
|
||||
{
|
||||
if (this.Context.Root != null & this.Context.Root.AsyncId == null)
|
||||
{
|
||||
this.Context.Root.AsyncId = Guid.NewGuid(); ;
|
||||
}
|
||||
}
|
||||
private static bool NextResult(IDataReader dataReader)
|
||||
{
|
||||
try
|
||||
|
@ -184,7 +184,7 @@ namespace SqlSugar
|
||||
{
|
||||
using (dataReader)
|
||||
{
|
||||
if (type.Name.Contains("KeyValuePair"))
|
||||
if (type.Name.StartsWith("KeyValuePair"))
|
||||
{
|
||||
return GetKeyValueList<T>(type, dataReader);
|
||||
}
|
||||
@ -206,7 +206,7 @@ namespace SqlSugar
|
||||
{
|
||||
using (dataReader)
|
||||
{
|
||||
if (type.Name.Contains("KeyValuePair"))
|
||||
if (type.Name.StartsWith("KeyValuePair"))
|
||||
{
|
||||
return await GetKeyValueListAsync<T>(type, dataReader);
|
||||
}
|
||||
@ -226,7 +226,7 @@ namespace SqlSugar
|
||||
}
|
||||
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);
|
||||
}
|
||||
@ -245,7 +245,7 @@ namespace SqlSugar
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ namespace SqlSugar
|
||||
_Context = value;
|
||||
}
|
||||
}
|
||||
|
||||
public SqlSugarClient Root { 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 bool IsSystemTablesConfig { get { return this.CurrentConnectionConfig.InitKeyType == InitKeyType.SystemTable; } }
|
||||
|
@ -33,6 +33,7 @@ namespace SqlSugar
|
||||
public bool IsEnableDiffLogEvent { get; set; }
|
||||
public DiffLogModel diffModel { get; set; }
|
||||
private Action RemoveCacheFunc { get; set; }
|
||||
private int SetColumnsIndex { get; set; }
|
||||
#endregion
|
||||
|
||||
#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();
|
||||
CheckTranscodeing();
|
||||
AppendSets();
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -244,10 +246,10 @@ namespace SqlSugar
|
||||
string key = SqlBuilder.GetNoTranslationColumnName(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();
|
||||
AppendSets();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
|
||||
{
|
||||
if (isUpdateColumns)
|
||||
@ -372,6 +374,17 @@ namespace SqlSugar
|
||||
#endregion
|
||||
|
||||
#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()
|
||||
{
|
||||
PreToSql();
|
||||
|
@ -96,7 +96,14 @@ namespace SqlSugar
|
||||
var isField = memberExpr.Member.MemberType == MemberTypes.Field;
|
||||
if (isProperty)
|
||||
{
|
||||
reval = GetPropertyValue(memberExpr);
|
||||
try
|
||||
{
|
||||
reval = GetPropertyValue(memberExpr);
|
||||
}
|
||||
catch
|
||||
{
|
||||
reval = null;
|
||||
}
|
||||
}
|
||||
else if (isField)
|
||||
{
|
||||
|
@ -109,6 +109,7 @@ namespace SqlSugar
|
||||
}
|
||||
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)));
|
||||
}
|
||||
else if (IsConst(item))
|
||||
|
@ -22,6 +22,8 @@ namespace SqlSugar
|
||||
private MappingColumnList _MappingColumns;
|
||||
private IgnoreColumnList _IgnoreColumns;
|
||||
private IgnoreColumnList _IgnoreInsertColumns;
|
||||
internal Guid? AsyncId { get; set; }
|
||||
internal bool? IsSingleInstance { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
@ -671,16 +673,44 @@ namespace SqlSugar
|
||||
#region Helper
|
||||
private SqlSugarProvider GetContext()
|
||||
{
|
||||
SqlSugarProvider result = null;
|
||||
if (IsSameThreadAndShard())
|
||||
return SameThreadAndShard();
|
||||
{
|
||||
result = SameThreadAndShard();
|
||||
}
|
||||
else if (IsNoSameThreadAndShard())
|
||||
return NoSameThreadAndShard();
|
||||
{
|
||||
result = NoSameThreadAndShard();
|
||||
}
|
||||
else if (IsSynchronization())
|
||||
return Synchronization();
|
||||
{
|
||||
result = Synchronization();
|
||||
}
|
||||
else if (IsSingleInstanceAsync())
|
||||
{
|
||||
result = NoSameThreadAsync();
|
||||
}
|
||||
else if (IsAsync())
|
||||
{
|
||||
result = Synchronization();
|
||||
}
|
||||
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()
|
||||
{
|
||||
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()
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
<package >
|
||||
<metadata>
|
||||
<id>sqlSugarCore</id>
|
||||
<version>5.0.0.7</version>
|
||||
<version>5.0.0.8</version>
|
||||
<authors>sunkaixuan</authors>
|
||||
<owners>Landa</owners>
|
||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||
|
Loading…
Reference in New Issue
Block a user