Vorrei semplicemente aggiungere degli oggetti di impaginazione che definiscono i dati di impaginazione richiesti. Ad esempio, considera questo codice C #:
public class OffsetPagination
{
public int PageNumber; //0
public int RowsPerPage = 10;
}
public class KeySetPagination
{
public Int64 FirstKey = -1;
public Int64 LastKey = -1;
public Boolean Next = true;
public int RowsPerPage = 10;
}
Quindi passa semplicemente quelli come parte dell'oggetto query. Da lì è solo questione di scrivere query per supportare l'impaginazione. Ad esempio, considerare questa stored procedure di SQL Server:
CREATE PROCEDURE [dbo].[SampleOffsetPaging]
@PageNumber INT,
@RowsPerPage INT
AS
BEGIN
SET NOCOUNT ON;
SELECT [Id],[Name],[Created] from SampleTable
ORDER BY Id
OFFSET @PageNumber*@RowsPerPage ROWS
FETCH NEXT @RowsPerPage ROWS ONLY
END
Il tuo cliente dovrebbe tenere traccia di quale pagina era e passarla quando necessario. Come ha indicato @Robert, non ha alcun effetto sul tuo modello di dominio in quanto verrebbero utilizzati nel livello dati per controllare le query. È solo una piccola quantità di informazioni aggiuntive per gestire il paging come parte della query.
Non sono sicuro di quale stack di tecnologia stai utilizzando, ma i concetti qui illustrati possono essere applicati in modo simile.