Support string.format

This commit is contained in:
sunkaixuna 2021-07-31 18:11:54 +08:00
parent 59948f8870
commit 7887282b6a
3 changed files with 21 additions and 0 deletions

View File

@ -470,5 +470,12 @@ namespace SqlSugar
var parameter3 = model.Args[2];
return string.Format(" DATEDIFF({0},{1},{2}) ", parameter.MemberValue?.ToString().ToSqlFilter(), parameter2.MemberName, parameter3.MemberName); ;
}
public string Format(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);
}
}
}

View File

@ -72,5 +72,6 @@ namespace SqlSugar
string Oracle_ToDate(MethodCallExpressionModel model);
string Oracle_ToChar(MethodCallExpressionModel model);
string SqlServer_DateDiff(MethodCallExpressionModel model);
string Format(MethodCallExpressionModel model);
}
}

View File

@ -753,6 +753,10 @@ namespace SqlSugar
var isValid = model.Args[0].IsMember && model.Args[1].IsMember == false;
//Check.Exception(!isValid, "SqlFunc.MappingColumn parameters error, The property name on the left, string value on the right");
this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[1].MemberName.ObjToString());
if (mappingColumnResult == "")
{
return model.Args[1].MemberName.ObjToString().TrimStart('\'').TrimEnd('\'');
}
return mappingColumnResult;
case "IsNull":
return this.Context.DbMehtods.IsNull(model);
@ -780,6 +784,11 @@ namespace SqlSugar
return this.Context.DbMehtods.Oracle_ToDate(model);
case "SqlServer_DateDiff":
return this.Context.DbMehtods.SqlServer_DateDiff(model);
case "Format":
var xx=base.BaseParameter;
var result = this.Context.DbMehtods.Format(model);
this.Context.Parameters.RemoveAll(it => model.Args.Select(x=>x.MemberName.ObjToString()).Contains(it.ParameterName) );
return result;
default:
break;
}
@ -802,6 +811,10 @@ namespace SqlSugar
{
return true;
}
if (expression.Method.Name == "Format" && expression.Method.DeclaringType == UtilConstants.StringType)
{
return true;
}
if (IsExtMethod(expression.Method.Name))
return true;
if (IsParseMethod(expression))