查询Azure表存储服务中的PartitionKey和RowKey语法



在阅读Microsoft文档上Azure表存储服务中的查询表和实体时,我发现PartitionKeyRowKeys可以在myaccount.Table.core.windows.netURL中以两种不同的方式进行过滤,如下所示:

https://<service-url>/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')

并用$filter实现相同:

https://<service-url>/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'

我从文档中了解到,PartitionKeyRowKey属性正在形成实体的主键,因此可以使用第一个语法以及PartitionKey和RowKey属性的筛选部分状态:

因为PartitionKey和RowKey属性构成实体的主键,所以可以使用特殊语法来标识实体。

问题:

  1. 使用$filter代替前面提到的特殊语法有什么缺点吗
  2. 我在解决方案中使用哪一个重要吗

如有任何澄清,我们将不胜感激,谢谢!

插入问题!因此,我尝试使用Postman执行这两个操作来获取实体,并且获取数据所需的时间几乎相同(在250毫秒到300毫秒之间(。

所以,只要您使用REST API,我认为这并不重要。

当您使用SDK(例如WindowsAzure.Storage版本9.3.3(时,有不同的方法可以使用这些功能。看看下面的示例代码:

var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var tableClient = account.CreateCloudTableClient();
var table = tableClient.GetTableReference("TableName");
//This uses https://account.table.core.windows.net/table(PartitionKey='pk', RowKey='rk')
TableOperation op = TableOperation.Retrieve("pk", "rk");
var entity = table.Execute(op).Result as DynamicTableEntity;
//This uses https://account.table.core.windows.net/table?$filter=PartitionKey eq 'pk' and RowKey eq 'rk'
TableQuery query = new TableQuery();
query.FilterString = "PartitionKey eq 'pk' and RowKey eq 'rk'";
var entity = table.ExecuteQuery(query).FirstOrDefault();

相关内容

  • 没有找到相关文章

最新更新