mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-05 17:37:58 +08:00
Update exp to sql
This commit is contained in:
parent
dc1ce1bd90
commit
a89bb5fb5b
@ -1,5 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
@ -46,6 +46,10 @@ namespace SqlSugar
|
||||
{
|
||||
AppendMember(parameter, isLeft, value, oppoSiteExpression);
|
||||
}
|
||||
else if (ExpressionTool.RemoveConvert(oppoSiteExpression) is MemberExpression)
|
||||
{
|
||||
AppendMember(parameter, isLeft, value, ExpressionTool.RemoveConvert(oppoSiteExpression));
|
||||
}
|
||||
else if ((oppoSiteExpression is UnaryExpression && (oppoSiteExpression as UnaryExpression).Operand is MemberExpression))
|
||||
{
|
||||
value = AppendUnaryExp(parameter, isLeft, value, oppoSiteExpression);
|
||||
@ -141,7 +145,13 @@ namespace SqlSugar
|
||||
}
|
||||
this.Context.Parameters.Add(p);
|
||||
}
|
||||
else if (parameter?.BaseParameter?.CommonTempData.ObjToString() == "IsJson=true")
|
||||
else if (UtilMethods.IsParameterConverter(columnInfo))
|
||||
{
|
||||
SugarParameter p = UtilMethods.GetParameterConverter(this.Context.SugarContext.Context, value, oppoSiteExpression, columnInfo);
|
||||
appendValue = p.ParameterName;
|
||||
this.Context.Parameters.Add(p);
|
||||
}
|
||||
else if (parameter?.BaseParameter?.CommonTempData.ObjToString() == "IsJson=true")
|
||||
{
|
||||
this.Context.Parameters.Add(new SugarParameter(appendValue, new SerializeService().SerializeObject(value)) { IsJson=true});
|
||||
}
|
||||
|
@ -19,6 +19,20 @@ namespace SqlSugar
|
||||
public class UtilMethods
|
||||
{
|
||||
|
||||
internal static bool IsParameterConverter(EntityColumnInfo columnInfo)
|
||||
{
|
||||
return columnInfo != null && columnInfo.SqlParameterDbType != null && columnInfo.SqlParameterDbType is Type
|
||||
&& typeof(ISugarDataConverter).IsAssignableFrom(columnInfo.SqlParameterDbType as Type);
|
||||
}
|
||||
internal static SugarParameter GetParameterConverter(ISqlSugarClient db,object value, Expression oppoSiteExpression, EntityColumnInfo columnInfo)
|
||||
{
|
||||
var entity = db.EntityMaintenance.GetEntityInfo(oppoSiteExpression.Type);
|
||||
var type = columnInfo.SqlParameterDbType as Type;
|
||||
var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType);
|
||||
var obj = Activator.CreateInstance(type);
|
||||
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 }) as SugarParameter;
|
||||
return p;
|
||||
}
|
||||
internal static bool IsErrorParameterName(ConnectionConfig connectionConfig,DbColumnInfo columnInfo)
|
||||
{
|
||||
return connectionConfig.MoreSettings?.IsCorrectErrorSqlParameterName == true &&
|
||||
|
Loading…
Reference in New Issue
Block a user