Update exp to sql

This commit is contained in:
sunkaixuan
2022-11-09 16:36:20 +08:00
parent 7ecb680851
commit 74f5da81c6
5 changed files with 15 additions and 2 deletions

View File

@@ -509,6 +509,12 @@ namespace SqlSugar
return string.Format(" DATEDIFF({0},{1},{2}) ", parameter.MemberValue?.ToString().ToSqlFilter(), parameter2.MemberName, parameter3.MemberName); ;
}
public virtual string FormatRowNumber(MethodCallExpressionModel model)
{
var str = model.Args[0].MemberValue.ObjToString();
var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue).ToArray();
return string.Format("'" + str + "'", array);
}
public virtual string Format(MethodCallExpressionModel model)
{

View File

@@ -76,6 +76,7 @@ namespace SqlSugar
string Oracle_ToChar(MethodCallExpressionModel model);
string SqlServer_DateDiff(MethodCallExpressionModel model);
string Format(MethodCallExpressionModel model);
string FormatRowNumber(MethodCallExpressionModel model);
string Abs(MethodCallExpressionModel model);
string Round(MethodCallExpressionModel model);

View File

@@ -109,6 +109,7 @@ namespace SqlSugar
public virtual Action<Type> InitMappingInfo { get; set; }
public virtual Action RefreshMapping { get; set; }
public virtual Type SubTableType { get; set; }
public string MethodName { get; set; }
#endregion
#region Core methods

View File

@@ -677,7 +677,7 @@ namespace SqlSugar
.GetEntityInfo(oppsite.Expression.Type).Columns.FirstOrDefault(it => it.PropertyName == oppsite.Member.Name);
return columnInfo;
}
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item)
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item,string name=null)
{
var newContext = this.Context.GetCopyContext();
newContext.MappingColumns = this.Context.MappingColumns;
@@ -685,6 +685,7 @@ namespace SqlSugar
newContext.IgnoreComumnList = this.Context.IgnoreComumnList;
newContext.IsSingle = this.Context.IsSingle;
newContext.SqlFuncServices = this.Context.SqlFuncServices;
newContext.MethodName = name;
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
this.Context.Index = newContext.Index;
this.Context.ParameterIndex = newContext.ParameterIndex;

View File

@@ -559,7 +559,7 @@ namespace SqlSugar
}
else if (isBinaryExpression)
{
model.Args.Add(GetMethodCallArgs(parameter, item));
model.Args.Add(GetMethodCallArgs(parameter, item,name));
}
else if (isSubIIF)
{
@@ -1002,6 +1002,10 @@ namespace SqlSugar
case "Format":
var xx=base.BaseParameter;
var result = this.Context.DbMehtods.Format(model);
if (this.Context.MethodName == "RowNumber")
{
result = this.Context.DbMehtods.FormatRowNumber(model);
}
this.Context.Parameters.RemoveAll(it => model.Args.Select(x=>x.MemberName.ObjToString()).Contains(it.ParameterName) );
return result;
case "Abs":