我正在使用Azure表存储并且有一个表我正在尝试查询行键以某些值结束的位置,我有兴趣过滤。这是我的代码:
var query = table.CreateQuery<DynamicTableEntity>().Where(o => o.PartitionKey == somePartitionKey && o.RowKey.EndsWith(string.Format("_{0}", aclId))).AsTableQuery();
然后我执行ExecuteQuerySegmentedAsync
但由于某种原因引发以下异常:
类型&#39; Microsoft.WindowsAzure.Storage.StorageException&#39;的第一次机会异常。发生在mscorlib.dll
其他信息:远程服务器返回错误:(501)未实现。
为什么会这样?我的代码/查询有问题导致它失败吗?无论如何,我真的需要一种有效的方法来检索行键中某些值结束的分区中的所有记录。
答案 0 :(得分:3)
您收到此错误的原因是您尝试执行不受支持的操作。截至今天,Azure Table Service不支持EndsWith
查询运算符。有关支持的LINQ运算符列表,请参阅以下链接:https://msdn.microsoft.com/en-us/library/azure/dd135725.aspx。
在您的方案中,您需要先在客户端下载实体,然后在这些实体上应用EndsWith
运算符。
答案 1 :(得分:0)
还请记住,Blob存储仅具有通用功能,不能访问表服务。因此,如果您遇到了这种情况,并且知道已经设置了Blob存储资源,那么它将无法正常工作。