Add SqlFunc.RowNumber & SqlFunc.RowCount

This commit is contained in:
sunkaixuan 2022-08-04 13:46:51 +08:00
parent 4fc25dcfeb
commit 01c0c54e03
4 changed files with 34 additions and 0 deletions

View File

@ -8,6 +8,21 @@ namespace SqlSugar
{
public partial class DefaultDbMethod : IDbMethods
{
public virtual string RowNumber(MethodCallExpressionModel model)
{
if (model.Args.Count == 1)
{
return $"row_number() over(order by {model.Args[0].MemberName})";
}
else
{
return $"row_number() over( partition by {model.Args[1].MemberName} order by {model.Args[0].MemberName})";
}
}
public virtual string RowCount(MethodCallExpressionModel model)
{
return "count(1) over()";
}
public virtual string IIF(MethodCallExpressionModel model)
{
var parameter = model.Args[0];

View File

@ -87,6 +87,9 @@ namespace SqlSugar
string Asc(MethodCallExpressionModel model);
string Desc(MethodCallExpressionModel model);
string Stuff(MethodCallExpressionModel model);
string RowNumber(MethodCallExpressionModel model);
string RowCount(MethodCallExpressionModel model);
string GetDateString(string dateValue,string format);
string GetForXmlPath();
}

View File

@ -9,6 +9,18 @@ namespace SqlSugar
{
public partial class SqlFunc
{
public static int RowNumber(object orderByField, object partitionBy)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static int RowNumber(object orderByField)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static int RowCount()
{
throw new NotSupportedException("Can only be used in expressions");
}
public static T Desc<T>(T value)
{
throw new NotSupportedException("Can only be used in expressions");

View File

@ -1010,6 +1010,10 @@ namespace SqlSugar
return this.Context.DbMehtods.Desc(model);
case "Stuff":
return this.Context.DbMehtods.Stuff(model);
case "RowNumber":
return this.Context.DbMehtods.RowNumber(model);
case "RowCount":
return this.Context.DbMehtods.RowCount(model);
default:
break;
}