Query polimorfiche con il table storage

Il table storage è l’implementazione, messa a disposizione da Windows Azure, di un datastore NoSQL, ideale per lo storage di dati strutturati, che non necessitano del concetto di “relazionalità”.

Con la nuova versione della “client library” per .Net sono state introdotte diverse feature interessanti. Fra queste la possibilità di interagire con la “pipeline” di serializzazione/deserializzazione di un’entità.  Questa possibilità apre scenari che prima di questo rilascio non erano (facilmente) implementabili.

In questo post vedremo come supportare, con poco sforzo, query polimorfiche con il table storage.

In prima battuta, ridefiniamo per la root della nostra gerarchia, il metodo di serializzazione, aggiungendo, oltre all’implementazione “standard” che prevede la serializzazione di tutte le property pubbliche, anche una nuova property “calcolata” che corrisponde al tipo concreto che stiamo persistendo:


…ed ora, innestiamoci effettivamente nella pipeline, con un’implementazione ad-hoc del delegate EntityResolver:


In questo modo possiamo scrivere una query polimorfica, sfruttando il fatto che, prima dell’ “idratazione” delle property della entity, possiamo utilizzare una logica custom (tramite una factory o altro), per la creazione del tipo concreto, ottenendo, con poco sforzo, il risultato cercato:


illustrazione di una piccola busta stilizzata

Scrivere software negli anni Venti

Sei email all'anno, cariche di link interessanti, tra codice, design, tecnologia, musica e l'immancabile angolo water cooler.

Iscrivimi
illustrazione logo newsletter do you speak it

Do You Speak IT?

Mini corso in 10 email, dedicato agli imprenditori e ai curiosi, per imparare la lingua della tecnologia.

Iscrivimi