mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Update exp to sql
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user