DAL con logica?

3

È normale che un DAL abbia una logica effettiva? Ad esempio, l'implementazione del mio repository si trova nel livello DAL (IRepository in BLL), se i dati di cui ha bisogno non si trovano nel DB locale, devono raccogliere vari siti Web per raccogliere i dati (e memorizzarli nel DB). È normale? O il DAL dovrebbe essere solo un passaggio tra il DB?

    
posta keelerjr12 15.03.2018 - 00:09
fonte

2 risposte

1

Il tuo livello di accesso ai dati può contenere più oggetti.

Nel tuo caso, direi che hai bisogno di almeno due repository

RepositoryDB : IRepository
RepositoryWebScraper : IRepository

Quindi hai una scelta su dove mettere la logica di caching

CachedOnDBWebScraperRepository : IRepository

Che avvolge entrambi gli altri. o:

BusinessLogicService : IMyService

Che avvolge entrambi i repository e altre logiche di business

    
risposta data 15.03.2018 - 13:50
fonte
3

Manterò la logica fuori dal DAL e la metto sopra 1 layer nel livello "business" o "controller". In questo modo il tuo DAL fa solo cose "DAL".

Codice pseudo commerciale di esempio:

        TOut obj;
        if (!_dal.Get(key, out obj))
        {
            obj = _webscrape.Get(key);
            _dal.Set(key, obj)
        }

        return obj;
    
risposta data 15.03.2018 - 02:10
fonte

Leggi altre domande sui tag