mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
Synchronization code
This commit is contained in:
@@ -29,6 +29,31 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return isNav;
|
return isNav;
|
||||||
}
|
}
|
||||||
|
internal static bool IsSqlParameterDbType(ExpressionContext context, Expression member)
|
||||||
|
{
|
||||||
|
var isNav = false;
|
||||||
|
if (context?.SugarContext!=null&&member is MemberExpression && (member as MemberExpression)?.Expression is ParameterExpression expression)
|
||||||
|
{
|
||||||
|
var typeEntity= context?.SugarContext.Context.EntityMaintenance.GetEntityInfo(expression.Type);
|
||||||
|
var columnInfo = typeEntity.Columns.FirstOrDefault(it => it.PropertyName == ExpressionTool.GetMemberName(member));
|
||||||
|
if (columnInfo.SqlParameterDbType is Type)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isNav;
|
||||||
|
}
|
||||||
|
internal static SugarParameter GetParameterBySqlParameterDbType(int index,object value,ExpressionContext context, Expression member)
|
||||||
|
{
|
||||||
|
var expression=(member as MemberExpression)?.Expression;
|
||||||
|
var typeEntity = context?.SugarContext.Context.EntityMaintenance.GetEntityInfo(expression.Type);
|
||||||
|
var columnInfo = typeEntity.Columns.FirstOrDefault(it => it.PropertyName == ExpressionTool.GetMemberName(member));
|
||||||
|
var columnDbType = columnInfo.SqlParameterDbType as Type;
|
||||||
|
var ParameterConverter = columnDbType.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType);
|
||||||
|
var obj = Activator.CreateInstance(columnDbType);
|
||||||
|
var p = ParameterConverter.Invoke(obj, new object[] { value, index }) as SugarParameter;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
public static List<string> ExtractMemberNames(Expression expression)
|
public static List<string> ExtractMemberNames(Expression expression)
|
||||||
{
|
{
|
||||||
var memberNames = new List<string>();
|
var memberNames = new List<string>();
|
||||||
|
@@ -465,6 +465,17 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
value = result;
|
value = result;
|
||||||
}
|
}
|
||||||
|
else if (name.IsIn("Contains", "StartsWith", "EndsWith") &&item==args.Last()&& ExpressionTool.IsSqlParameterDbType(this.Context, args.First()))
|
||||||
|
{
|
||||||
|
var myvalue = ExpressionTool.DynamicInvoke(args.Last());
|
||||||
|
var parametre = ExpressionTool.GetParameterBySqlParameterDbType(this.Context.ParameterIndex,myvalue, this.Context, args.First());
|
||||||
|
this.Context.Parameters.Add(parametre);
|
||||||
|
methodCallExpressionArgs.MemberName = parametre.ParameterName;
|
||||||
|
methodCallExpressionArgs.MemberValue = parametre.Value;
|
||||||
|
methodCallExpressionArgs.IsMember = true;
|
||||||
|
isRemoveParamter = true;
|
||||||
|
this.Context.ParameterIndex++;
|
||||||
|
}
|
||||||
methodCallExpressionArgs.MemberValue = value;
|
methodCallExpressionArgs.MemberValue = value;
|
||||||
if (isRemoveParamter != true)
|
if (isRemoveParamter != true)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user