Soluzione cache per Dapper quando si utilizzano stored procedure (MSSQL)

asp.net-mvc-3 c#-4.0 dapper sql-server-2008

Domanda

Sto usando Dapper principalmente per chiamare stored procedure nel database MSSQL 2008 R2 . Non ho classi che si associano alle tabelle del database. La maggior parte dei dati finisce in IEnumerable <Dynamic> e viene trasmessa alla griglia sullo schermo.

Esiste una soluzione pronta all'uso per il buffering dei dati che potrei usare? (Ho bisogno di usarlo su MVC).

I dati nel database sono sia statici che dinamici. Uso il modello di repository per accedere ai dati.

Risposta esperta

Dapper non include alcuna funzione di caching dei dati incorporati (sebbene utilizzi estese caching internamente per il livello di meta-programmazione): si concentra direttamente su roba di ADO.NET - tuttavia, è possibile utilizzare praticamente tutti i caching disponibili in commercio componente, inclusa la cache di runtime HTTP ( HttpContext.Current.Cache ), o le più recenti implementazioni di ObjectCache etc. Perché questi prendono solo oggetti, dovrebbe funzionare bene.

Se si utilizza una cache distribuita (magari tramite app-fabric, redis o memcached), è necessario che i dati siano serializzabili. In tale scenario, suggerirei di utilizzare i tipi POCO formali per l'associazione anziché l'API dynamic . Ad esempio, in-house usiamo dapper per popolare i POCO annotati con marcatori protobuf-net per la serializzazione e archiviati tramite BookSleeve ai redis. Sembra più complicato di quanto sia in realtà.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow