Synchronization code

This commit is contained in:
sunkaixuan
2022-12-06 09:53:19 +08:00
parent ec40ad477d
commit 9210bf618a
2 changed files with 29 additions and 1 deletions

View File

@@ -145,6 +145,10 @@ namespace SqlSugar
{
this.Context.Parameters.Add(new SugarParameter(appendValue, new SerializeService().SerializeObject(value)) { IsJson=true});
}
else if (parameter?.BaseParameter?.CommonTempData.ObjToString() == "IsArray=true")
{
this.Context.Parameters.Add(new SugarParameter(appendValue, value) { IsArray = true });
}
else
{
this.Context.Parameters.Add(new SugarParameter(appendValue, value));

View File

@@ -50,13 +50,37 @@ namespace SqlSugar
DefaultBinary(parameter, expression, operatorValue);
parameter.CommonTempData = null;
}
else if (IsUpdateArray(parameter, expression, operatorValue))
{
parameter.CommonTempData = "IsArray=true";
DefaultBinary(parameter, expression, operatorValue);
parameter.CommonTempData = null;
}
else
{
DefaultBinary(parameter, expression, operatorValue);
}
}
private bool IsUpdateArray(ExpressionParameter parameter, BinaryExpression expression, string operatorValue)
{
var isOk = parameter.Context.ResolveType == ResolveExpressType.WhereSingle && operatorValue == "=" && (expression.Left is MemberExpression) && expression.Left.Type.IsClass();
if (isOk && this.Context.SugarContext != null)
{
var member = (expression.Left as MemberExpression);
if (member.Expression != null)
{
var entity = this.Context.SugarContext.Context.EntityMaintenance.GetEntityInfo(member.Expression.Type);
var jsonColumn = entity.Columns.FirstOrDefault(it => it.IsArray && it.PropertyName == ExpressionTool.GetMemberName(expression.Left));
if (jsonColumn != null)
{
return true;
}
}
}
return false;
}
private bool IsUpdateJson(ExpressionParameter parameter,BinaryExpression expression, string operatorValue)
private bool IsUpdateJson(ExpressionParameter parameter,BinaryExpression expression, string operatorValue)
{
var isOk= parameter.Context.ResolveType==ResolveExpressType.WhereSingle&&operatorValue == "=" && (expression.Left is MemberExpression) && expression.Left.Type.IsClass();
if (isOk&&this.Context.SugarContext != null)