AZURE 表存储、ODATA 和更友好的 URI 查询

Posted

技术标签:

【中文标题】AZURE 表存储、ODATA 和更友好的 URI 查询【英文标题】:AZURE table storage, ODATA, and friendlier URI queries 【发布时间】:2010-12-08 23:25:26 【问题描述】:

我想要一个 ODATA 服务,它使 Azure 表存储可查询,但我不想强制客户端创建引用 PartitionKeys 和 RowKeys 的查询。创建可以转换 URI 查询的 ODATA 服务需要什么

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

到表存储查询,例如:

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);

如果可以做到这一点,它的优点是客户端在创建查询时不必了解 Partitionkeys 或 Rowkeys。但是能做到吗?必须通过自定义数据服务提供商完成吗?并且这样的提供者必须执行什么编码来执行这样的 URI 来查询翻译?

【问题讨论】:

【参考方案1】:

如果您有帐户密钥和名称,则可以查询 Azure 表存储。最好的办法是创建自己的 OData 服务并将其转换为查询。您可以使用 WCF 数据服务工具包来帮助您执行此操作。您可以查看项目here。这会将您的服务公开为 OData 并帮助您编写更新插入等。

【讨论】:

感谢 Scott,我找到了工具包,你说得对,它可以用来做我想做的事。谢谢!

以上是关于AZURE 表存储、ODATA 和更友好的 URI 查询的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Azure 存储表中获取所有项目

无法使用表存储在 Azure 云工作者角色中加载文件或程序集 Microsoft.Data.OData 版本 = 5.2.0.0 错误

对 Azure 表使用 Get Entities 操作时,如何删除 odata.etag?

查询特定列 Azure 表存储

通过 OData 公开的 Azure Data Lake Store

是否有用于 OData 协议 Uri 的 .NET 类包装器