Synchronous code

This commit is contained in:
sunkaixuan 2025-07-31 15:05:37 +08:00
parent f3181c9e2e
commit 10342ab51b
13 changed files with 106 additions and 31 deletions

View File

@ -345,10 +345,10 @@ namespace SqlSugar
var result = new DbResult<bool>();
try
{
this.BeginTran();
this.BeginTran();
if (action != null)
action();
this.CommitTran();
this.CommitTran();
result.Data = result.IsSuccess = true;
}
catch (Exception ex)
@ -485,15 +485,18 @@ namespace SqlSugar
if (this.ProcessingEventStartingSQL != null)
ExecuteProcessingSQL(ref sql, ref parameters);
ExecuteBefore(sql, parameters);
IDbCommand sqlCommand = GetCommand(sql, parameters);
int count = sqlCommand.ExecuteNonQuery();
if (this.IsClearParameters)
sqlCommand.Parameters.Clear();
// 影响条数
this.SqlExecuteCount = count;
ExecuteAfter(sql, parameters);
sqlCommand.Dispose();
return count;
using (IDbCommand sqlCommand = GetCommand(sql, parameters))
{
int count = sqlCommand.ExecuteNonQuery();
if (this.IsClearParameters)
sqlCommand.Parameters.Clear();
// 影响条数
this.SqlExecuteCount = count;
ExecuteAfter(sql, parameters);
//sqlCommand.Dispose();
return count;
}
}
catch (Exception ex)
{
@ -633,18 +636,20 @@ namespace SqlSugar
if (this.ProcessingEventStartingSQL != null)
ExecuteProcessingSQL(ref sql,ref parameters);
ExecuteBefore(sql, parameters);
var sqlCommand =IsOpenAsync? await GetCommandAsync(sql, parameters) : GetCommand(sql, parameters);
int count;
if (this.CancellationToken == null)
count=await sqlCommand.ExecuteNonQueryAsync();
else
count=await sqlCommand.ExecuteNonQueryAsync(this.CancellationToken.Value);
if (this.IsClearParameters)
sqlCommand.Parameters.Clear();
this.SqlExecuteCount = count;
ExecuteAfter(sql, parameters);
sqlCommand.Dispose();
return count;
using (var sqlCommand = IsOpenAsync ? await GetCommandAsync(sql, parameters) : GetCommand(sql, parameters))
{
int count;
if (this.CancellationToken == null)
count = await sqlCommand.ExecuteNonQueryAsync();
else
count = await sqlCommand.ExecuteNonQueryAsync(this.CancellationToken.Value);
if (this.IsClearParameters)
sqlCommand.Parameters.Clear();
this.SqlExecuteCount = count;
ExecuteAfter(sql, parameters);
//sqlCommand.Dispose();
return count;
}
}
catch (Exception ex)
{
@ -1052,7 +1057,7 @@ namespace SqlSugar
var result = SqlQuery<T, T2, T3, T4, T5, T6, object>(sql, parameters);
return new Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>>(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5, result.Item6);
}
public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>> SqlQuery<T, T2, T3, T4, T5, T6, T7>(string sql, object parameters = null)
public virtual Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>> SqlQuery<T, T2, T3, T4, T5, T6, T7>(string sql, object parameters = null)
{
var parsmeterArray = this.GetParameters(parameters);
this.Context.InitMappingInfo<T>();
@ -1513,7 +1518,7 @@ namespace SqlSugar
this.Context.Root.AsyncId = Guid.NewGuid(); ;
}
}
private static bool NextResult(IDataReader dataReader)
protected bool NextResult(IDataReader dataReader)
{
try
{
@ -1784,7 +1789,7 @@ namespace SqlSugar
private List<TResult> GetData<TResult>(Type entityType, IDataReader dataReader)
protected List<TResult> GetData<TResult>(Type entityType, IDataReader dataReader)
{
List<TResult> result;
if (entityType == UtilConstants.DynamicType)

View File

@ -64,6 +64,8 @@ namespace SqlSugar
}
public virtual void InitTables(Type entityType)
{
var oldSlave = this.Context.CurrentConnectionConfig.SlaveConnectionConfigs;
this.Context.CurrentConnectionConfig.SlaveConnectionConfigs = null;
var splitTableAttribute = entityType.GetCustomAttribute<SplitTableAttribute>();
if (splitTableAttribute != null)
{
@ -104,6 +106,7 @@ namespace SqlSugar
RestMappingTables(oldTableList);
}
this.Context.CurrentConnectionConfig.SlaveConnectionConfigs = oldSlave;
}
@ -188,7 +191,14 @@ namespace SqlSugar
TableDifferenceProvider result = new TableDifferenceProvider();
foreach (var type in types)
{
GetDifferenceTables(result, type);
try
{
GetDifferenceTables(result, type);
}
catch (Exception ex)
{
Check.ExceptionEasy($"实体{type.Name} 出错,具体错误:" + ex.Message, $" {type.Name} error." + ex.Message);
}
}
return result;
}
@ -200,6 +210,7 @@ namespace SqlSugar
var tempTableName = "TempDiff" + DateTime.Now.ToString("yyMMssHHmmssfff");
var oldTableName = this.Context.EntityMaintenance.GetEntityInfo(type).DbTableName;
var db = new SqlSugarProvider(UtilMethods.CopyConfig(this.Context.CurrentConnectionConfig));
db.CurrentConnectionConfig.SlaveConnectionConfigs = null;
db.CurrentConnectionConfig.ConfigureExternalServices=UtilMethods.IsNullReturnNew(db.CurrentConnectionConfig.ConfigureExternalServices);
db.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService += (x, p) =>
{

View File

@ -313,6 +313,10 @@ namespace SqlSugar
var obj = dr.GetValue(i);
if (obj == null)
return default(T);
if (obj is byte[] bytes)
{
obj = dr.GetString(i);
}
var value = obj.ObjToString();
return new SerializeService().DeserializeObject<T>(value);
}

View File

@ -43,6 +43,16 @@ namespace SqlSugar
}
return this;
}
public EntityColumnable<T> ManyToOne(Expression<Func<T, object>> propertyExpression, string firstName, string lastName = null)
{
var name = ExpressionTool.GetMemberName(propertyExpression);
if (entityColumnInfo.PropertyName == name && IsTable)
{
entityColumnInfo.Navigat = new Navigate(NavigateType.ManyToOne, firstName, lastName);
entityColumnInfo.IsIgnore = true;
}
return this;
}
public EntityColumnable<T> OneToMany(Expression<Func<T, object>> propertyExpression, string firstName, string lastName)
{
var name = ExpressionTool.GetMemberName(propertyExpression);

View File

@ -191,7 +191,7 @@ namespace SqlSugar
}
public ISugarQueryable<T> IncludesAllSecondLayer<TReturn1>(Expression<Func<T, TReturn1>> expression, params string[] ignoreProperyNameList)
{
this.Includes(expression);
//this.Includes(expression);
var type = typeof(TReturn1);
if (type.FullName.IsCollectionsList())
{

View File

@ -1770,6 +1770,27 @@ namespace SqlSugar
var groupBySql = UtilMethods.GetSqlString(DbType.SqlServer, result, newParas.ToArray());
this.QueryBuilder.GroupBySql = groupBySql;
this.QueryBuilder.GroupBySqlOld = result;
if (expression is NewExpression s && s.Arguments.Count > 1)
{
foreach (var item in s.Arguments)
{
var q = this.Context.Queryable<object>().QueryBuilder;
var itemObj= q.GetExpressionValue(item, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple).GetResultString();
if (q.Parameters.Any())
{
var itemGroupBySql = UtilMethods.GetSqlString(DbType.SqlServer, itemObj, q.Parameters.ToArray());
this.QueryBuilder.GroupBySql = itemGroupBySql;
this.QueryBuilder.GroupBySqlOld = itemGroupBySql;
this.GroupBy(itemGroupBySql);
}
else
{
this.GroupBy(itemObj);
}
}
return this;
}
GroupBy(result);
}
else
@ -2389,8 +2410,17 @@ namespace SqlSugar
new QueryableAppendColumn(){ Name="sugarIndex",AsName="sugarIndex" }
};
this.QueryBuilder.AppendValues = null;
var isNavQuery = this.QueryBuilder.Includes != null;
if (isNavQuery)
{
this.Context.Ado.DbBind.QueryBuilder.AppendColumns = this.QueryBuilder.AppendColumns;
}
var subList = ExpressionBuilderHelper.CallFunc(callType, methodParamters, this.Clone(), "SubQueryList");
var appendValue = this.QueryBuilder.AppendValues;
if (isNavQuery)
{
appendValue = this.Context.Ado.DbBind.QueryBuilder.AppendValues;
}
var list = (subList as IEnumerable).Cast<object>().ToList();
if (isFirst && !typeof(TResult).IsAnonymousType())
{

View File

@ -363,6 +363,7 @@ namespace SqlSugar
{
sql = " ";
}
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
@ -1196,6 +1197,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -1927,6 +1929,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex=clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -2762,6 +2765,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;

View File

@ -377,6 +377,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -1223,6 +1224,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -2084,6 +2086,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -2788,6 +2791,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -3586,6 +3590,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;

View File

@ -362,6 +362,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;
@ -993,6 +994,7 @@ namespace SqlSugar
sql = " ";
}
this.QueryBuilder.Parameters = clone.QueryBuilder.Parameters;
this.QueryBuilder.SelectNewIgnoreColumns = clone.QueryBuilder.SelectNewIgnoreColumns;
this.QueryBuilder.SubToListParameters = clone.QueryBuilder.SubToListParameters;
this.QueryBuilder.LambdaExpressions.ParameterIndex = clone.QueryBuilder.LambdaExpressions.ParameterIndex;
var parameters = (expression as LambdaExpression).Parameters;

View File

@ -293,7 +293,7 @@ namespace SqlSugar
{
return LambdaExpressions.DbMehtods.GetDate();
}
else if (UtilMethods.IsErrorDecimalString() == true)
else if ((columnInfo.Value is decimal|| columnInfo.Value is double||columnInfo.Value is float) &&UtilMethods.IsErrorDecimalString() == true)
{
var pname = Builder.SqlParameterKeyWord + "Decimal" + GetDbColumnIndex;
var p = new SugarParameter(pname, columnInfo.Value);

View File

@ -476,7 +476,7 @@ namespace SqlSugar
GetDbColumnIndex++;
return pname;
}
else if (UtilMethods.IsErrorDecimalString() == true)
else if ((columnInfo.Value is decimal || columnInfo.Value is double || columnInfo.Value is float) && UtilMethods.IsErrorDecimalString() == true)
{
var pname = Builder.SqlParameterKeyWord + "Decimal" + GetDbColumnIndex;
var p = new SugarParameter(pname, columnInfo.Value);

View File

@ -343,7 +343,7 @@ namespace SqlSugar
{
continue;
}
var item = memberAssignment.Expression;
var item =ExpressionTool.RemoveConvert(memberAssignment.Expression);
if (item.Type.IsClass()&& item is MemberExpression &&(item as MemberExpression).Expression is ParameterExpression)
{
var rootType = ((item as MemberExpression).Expression as ParameterExpression).Type;

View File

@ -751,6 +751,10 @@ namespace SqlSugar
if (destinationType.IsEnum && value is int)
return Enum.ToObject(destinationType, (int)value);
if (destinationType.IsEnum && value is double)
return Enum.ToObject(destinationType, Convert.ToInt32(value));
if (destinationType.IsEnum && value is decimal)
return Enum.ToObject(destinationType, Convert.ToInt32(value));
if (destinationType.Name == "TimeOnly"&& sourceType.Name!= "TimeOnly")
{