Tutto quanto riportato di seguito riguarda un'app di ASP.NET c #. Ho un Singleton Settings MemoryCache che legge i valori dal database al primo accesso e li memorizza nella cache, quindi li invalida utilizzando il messaggio SQL Service Broker e rilegge come richiesto.
Ai fini dei controllori standard, creo il mio contesto Db in un ambito di richiesta. Tuttavia, questo ovviamente significa che non posso usare lo stesso contesto nella classe Settings Cache, dato che si tratta di un singleton e abbiamo una collisione tra scope.
Al momento, ho finito con due contesti db: i Controllori lo ricevono tramite il contenitore IoC, mentre un Singleton lo crea proprio.
Tuttavia, non sono soddisfatto di questo approccio (principalmente a causa del modo in cui mi sento su due contesti, la cache non imposta nulla sul db, quindi la concorrenza non è un problema tanto).
Che cos'è un modo migliore per farlo?