2010-12-08 61 views
0

Je souhaite disposer d'un service ODATA qui permet d'interroger Azure Table Storage, mais je ne souhaite pas forcer le client à créer des requêtes qui référencent PartitionKeys et RowKeys. Que faudrait-il pour créer un service OData qui peut convertir requête URI tels queStockage de table AZURE, ODATA et requêtes URI plus conviviales

http://MyService.svc/Blogs(‘CustomerId’)?startdate eq’12/01/2010’&enddate eq’12/15/2010’ 

à une requête de stockage de table tels que:

var rowKeyStart = startdate;  
var rowKeyEnd = enddate;  
var query = ctx.SomeBlogsTable.Where(p => p.PartitionKey == ‘CustomerId’ && 
      p.RowKey.CompareTo(rowKeyStart) <= 0 && 
      p.RowKey.CompareTo(rowKeyEnd) >= 0).Take(1000); 

Si cela pouvait se faire, il a l'avantage de libérer le client d'avoir à savoir sur Partitionkeys ou Rowkeys dans la création de la requête. Mais est-ce que c'est possible? Doit-il être fait avec un fournisseur de services de données personnalisé? Et quel codage un tel fournisseur doit-il effectuer pour effectuer une telle URI pour interroger la traduction?

Répondre

1

Le stockage de la table Azure peut être interrogé si vous disposez de la clé et du nom du compte. La meilleure chose à faire est de créer votre propre service OData et de le dissimuler à une requête. Vous pouvez utiliser WCF Data Service Toolkit pour vous aider à le faire. Vous pouvez consulter le projet here. Cela exposera votre service comme OData et vous aidera à écrire les insertions de mises à jour etc.

+0

Merci Scott, j'ai trouvé la boîte à outils, et vous avez raison, elle peut être utilisée pour faire exactement ce que je voulais. Merci! –