In Entity Framework, using LINQ to Entities, database paging is usually done in following manner:
int totalRecords = EntityContext.Context.UserSet.Count;
var
ALTER proc [dbo].[GetNames]
@lastRow bigint,
@pageSize bigint,
@totalRowCount bigint output
as
begin
select @totalRowCount = count(*) from _firstNames, _lastNames
select
FirstName,
LastName,
RowNumber
from
(
select
fn.[FirstName] as FirstName,
ln.[Name] as LastName,
row_number() over( order by FirstName ) as RowNumber
from
_firstNames fn, _lastNames ln
) as data
where
RowNumber between ( @lastRow + 1 ) and ( @lastRow + @pageSize )
end
There is no way to get this into one call, but this works fast enough.