Parametri di paging - interfaccia del repository di dominio

1

Di solito definisco le interfacce del mio repository su Domain Layer con DDD. Dato che l'interfaccia utente deve visualizzare alcuni dati paginati, ho pensato che aggiungere parametri come currentPage , pageSize e definire un modello PagingResult al mio livello dominio non riguardasse il dominio stesso.

Questa è la firma del metodo:

PagingResult<Customer> GetCustomers(int currentPage, int pageSize, string nameToFind);

Devo mantenere questo metodo nel mio dominio ICustomerRepository ? Ho pensato di definirlo sul livello dell'applicazione con un nuovo ICustomerAppRepository .

Quindi fondamentalmente la domanda è: è bello o comune avere questo tipo di metodo sulle interfacce degli archivi di domini?

    
posta Murilo 07.12.2018 - 18:32
fonte

1 risposta

1

A volte è sufficiente supportare la paginazione a livello di database, per motivi di prestazioni. Non è una violazione della separazione delle preoccupazioni se si concettualizza l'impaginazione in modo agnostico all'applicazione.

Quindi per esempio invece di

PagingResult<Customer> GetCustomers(int currentPage, int pageSize, string nameToFind);

Potresti scrivere

IEnumerable<Customer> GetCustomers(string nameToFind, int numberToReturn);

e

IEnumerable<Customer> GetCustomers(
    string nameToFind, 
    int numberToReturn, 
    Customer startAfter
);

Potresti quindi utilizzare il primo metodo sopra per ottenere il primo set di risultati e utilizzare il secondo metodo per ottenere set di risultati successivi che iniziano con il primo cliente dopo l'ultima riga della pagina precedente.

Rimuove il concetto di impaginazione dal livello dati, ma ti dà comunque i metodi necessari per ottenere i record per l'interfaccia utente.

    
risposta data 07.12.2018 - 20:43
fonte

Leggi altre domande sui tag