Update exp to sql

This commit is contained in:
skx
2020-10-27 15:21:26 +08:00
parent 9077dc58dd
commit f99d6337de
2 changed files with 18 additions and 14 deletions

View File

@@ -11,6 +11,8 @@ namespace SqlSugar
public List<MethodCallExpressionArgs> Args { get; set; }
public string Name { get; set; }
public dynamic Data { get; set; }
public Expression Expression { get; set; }
public Expression BaseExpression { get; set; }
}
public class MethodCallExpressionArgs

View File

@@ -448,7 +448,7 @@ namespace SqlSugar
methodCallExpressionArgs.IsMember = false;
}
}
if (IsDateDate(item)||IsDateValue(item))
if (IsDateDate(item) || IsDateValue(item))
{
methodCallExpressionArgs.IsMember = true;
}
@@ -473,22 +473,24 @@ namespace SqlSugar
private static bool IsDateDate(Expression item)
{
return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date"&&item.ToString()!= "DateTime.Now.Date";
return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date" && item.ToString() != "DateTime.Now.Date";
}
private static bool IsDateValue(Expression item)
{
return item.Type == UtilConstants.IntType &&
item is MemberExpression &&
(item as MemberExpression).Expression!=null&&
(item as MemberExpression).Expression.Type==UtilConstants.DateType&&
(item as MemberExpression).Expression is MemberExpression&&
((item as MemberExpression).Expression as MemberExpression).Member.Name=="Value";
return item.Type == UtilConstants.IntType &&
item is MemberExpression &&
(item as MemberExpression).Expression != null &&
(item as MemberExpression).Expression.Type == UtilConstants.DateType &&
(item as MemberExpression).Expression is MemberExpression &&
((item as MemberExpression).Expression as MemberExpression).Member.Name == "Value";
}
private object GetMethodValue(string name, MethodCallExpressionModel model)
{
if (IsExtMethod(name))
{
model.Expression = this.Expression;
model.BaseExpression = this.BaseParameter.CurrentExpression;
DbType type = DbType.SqlServer;
if (this.Context is SqlServerExpressionContext)
type = DbType.SqlServer;
@@ -502,7 +504,7 @@ namespace SqlSugar
}
else
{
if (name == "Parse" && TempParseType.IsIn(UtilConstants.GuidType)&&model.Args!=null&&model.Args.Count()>1)
if (name == "Parse" && TempParseType.IsIn(UtilConstants.GuidType) && model.Args != null && model.Args.Count() > 1)
{
name = "Equals";
}
@@ -549,15 +551,15 @@ namespace SqlSugar
model.Args[0].MemberValue = first.Value;
}
}
model.Data =this.Context.SqlParameterKeyWord+"INP_"+this.Context.ParameterIndex;
model.Data = this.Context.SqlParameterKeyWord + "INP_" + this.Context.ParameterIndex;
this.Context.ParameterIndex++;
if (model.Args[0].MemberValue.HasValue())
{
var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue;
int i = 0;
foreach (var item in inValueIEnumerable)
foreach (var item in inValueIEnumerable)
{
this.Context.Parameters.Add(new SugarParameter(model.Data+"_"+i,item));
this.Context.Parameters.Add(new SugarParameter(model.Data + "_" + i, item));
i++;
}
}
@@ -760,7 +762,7 @@ namespace SqlSugar
{
joinStringParameter.Args.Add(new MethodCallExpressionArgs()
{
MemberName=r.TrimStart('@')
MemberName = r.TrimStart('@')
});
}
else
@@ -769,7 +771,7 @@ namespace SqlSugar
var name = base.AppendParameter(r);
joinStringParameter.Args.Add(new MethodCallExpressionArgs()
{
MemberName= name
MemberName = name
});
}
}