Support Sqlserver 2012 page

This commit is contained in:
sunkaixuna 2021-07-04 01:14:59 +08:00
parent 0e61404e42
commit 807f048454
4 changed files with 65 additions and 0 deletions

View File

@ -1082,6 +1082,56 @@ namespace SqlSugar
InitMapping();
return _ToList<T>();
}
public List<T> ToOffsetPage(int pageIndex, int pageSize)
{
if (this.Context.CurrentConnectionConfig.DbType != DbType.SqlServer)
{
return this.ToPageList(pageIndex, pageSize);
}
else
{
_ToOffsetPage(pageIndex, pageSize);
return this.ToList();
}
}
public List<T> ToOffsetPage(int pageIndex, int pageSize, ref int totalNumber)
{
if (this.Context.CurrentConnectionConfig.DbType != DbType.SqlServer)
{
return this.ToPageList(pageIndex, pageSize, ref totalNumber);
}
else
{
totalNumber = this.Clone().Count();
_ToOffsetPage(pageIndex, pageSize);
return this.Clone().ToList();
}
}
public Task<List<T>> ToOffsetPageAsync(int pageIndex, int pageSize)
{
if (this.Context.CurrentConnectionConfig.DbType != DbType.SqlServer)
{
return this.ToPageListAsync(pageIndex, pageSize);
}
else
{
_ToOffsetPage(pageIndex, pageSize);
return this.ToListAsync();
}
}
public async Task<List<T>> ToOffsetPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
{
if (this.Context.CurrentConnectionConfig.DbType != DbType.SqlServer)
{
return await this.ToPageListAsync(pageIndex, pageSize, totalNumber);
}
else
{
totalNumber =await this.Clone().CountAsync();
_ToOffsetPage(pageIndex, pageSize);
return await this.Clone().ToListAsync();
}
}
public virtual List<T> ToPageList(int pageIndex, int pageSize)
{
pageIndex = _PageList(pageIndex, pageSize);
@ -1508,6 +1558,11 @@ namespace SqlSugar
return this;
}
}
private void _ToOffsetPage(int pageIndex, int pageSize)
{
QueryBuilder.Offset = $" offset {(pageIndex - 1) * pageSize} rows fetch next {pageSize} rows only";
}
private int _PageList(int pageIndex, int pageSize)
{
if (pageIndex == 0)

View File

@ -477,6 +477,7 @@ namespace SqlSugar
#endregion
#region Get SQL Partial
public string Offset { get; set; }
public virtual string GetSelectValue
{
get
@ -640,6 +641,7 @@ namespace SqlSugar
}
}
#endregion
private string GetTableName(string entityName)

View File

@ -155,6 +155,10 @@ namespace SqlSugar
DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage);
Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
List<T> ToOffsetPage(int pageIndex,int pageSize);
List<T> ToOffsetPage(int pageIndex, int pageSize,ref int totalNumber);
Task<List<T>> ToOffsetPageAsync(int pageIndex, int pageSize);
Task<List<T>> ToOffsetPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
List<T> ToPageList(int pageIndex, int pageSize);
Task<List<T>> ToPageListAsync(int pageIndex, int pageSize);
List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber);

View File

@ -48,6 +48,10 @@ namespace SqlSugar
result = ToPageSql2(result, ExternalPageIndex, ExternalPageSize, true);
}
this.OrderByValue = oldOrderBy;
if (!string.IsNullOrEmpty(this.Offset))
{
result += this.Offset;
}
return result;
}
}