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 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) public virtual string IIF(MethodCallExpressionModel model)
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];

View File

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

View File

@@ -9,6 +9,18 @@ namespace SqlSugar
{ {
public partial class SqlFunc 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) public static T Desc<T>(T value)
{ {
throw new NotSupportedException("Can only be used in expressions"); throw new NotSupportedException("Can only be used in expressions");

View File

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