Tutti i metodi di database dovrebbero essere nel repository?

1

Diciamo che ho un UserRepository . Ha i metodi CRUD di base. Secondo il modello di repository, dovrebbe contenere metodi come IsAdministrator(user) da verificare rispetto al database se un utente è un amministratore? In caso contrario, quale modello è rilevante?

    
posta Sipo 07.05.2017 - 16:07
fonte

1 risposta

5

Sì, sebbene non sia necessario controllare il database per IsAdministrator se si dispone già dell'utente.

Se stai seguendo il modello di repository, dovresti essere in grado di utilizzare i tuoi oggetti senza un database.

Quindi, se disponi di un repository per utenti e ruoli, potresti avere un GetRolesForUserId (id stringa) su RolesRepository, che sarebbe in sostanza la tua funzione di amministratore. Ma non useresti il database per eseguire calcoli.

Se avessi qualche calcolo da eseguire al di fuori degli oggetti responsabilità, lo metterei in un servizio piuttosto che nel repository.

public class AdminService
{
    public bool IsAdmin(List<Roles> rolesForUser)
    {
        if(rolesForUser.Contains('admin') return true;
....
    
risposta data 07.05.2017 - 16:19
fonte

Leggi altre domande sui tag