.net core 当分区未知(但行键未知)时检索结果

.net core 当分区未知(但行键未知)时检索结果,.net-core,azure-table-storage,.net Core,Azure Table Storage,在我的情况下(我碰巧每个条目只有两种类型,因此有两个分区,行键是唯一的),我可以编写一组迭代查询,遍历所有可能的分区,如下所示: TableOperation retrieveOperation=TableOperation.Retrieve(Mode.GreyScale.Description(),id); TableResult query=wait table.ExecuteAsync(retrieveOperation); if(query.Result!=null) { 返回新的OkO

在我的情况下(我碰巧每个条目只有两种类型,因此有两个分区,行键是唯一的),我可以编写一组迭代查询,遍历所有可能的分区,如下所示:

TableOperation retrieveOperation=TableOperation.Retrieve(Mode.GreyScale.Description(),id);
TableResult query=wait table.ExecuteAsync(retrieveOperation);
if(query.Result!=null)
{
返回新的OkObjectResult((JobStatus)query.Result);
}
其他的
{
retrieveOperation=TableOperation.Retrieve(Mode.Sepia.Description(),id);
query=wait table.ExecuteAsync(retrieveOperation);
if(query.Result!=null)
{
返回新的OkObjectResult((JobStatus)query.Result);
}
}
返回新的NotFoundResult();
问题是,这显然是低效的(想象一下,如果有数百种类型!)。当您只知道行键时,azure存储表是否提供了一种有效的查询方法

azure存储表是否提供了有效的查询方法 只知道行键吗

对您的问题的简单答案是否定的,当您只知道行键时,并没有有效的方法查询表。表服务将执行从一个分区到另一个分区的完整表扫描,并查找具有匹配RowKey的实体

在您的情况下,您可能希望使用创建查询,然后调用或获取查询结果

        TableQuery query = new TableQuery().Where("RowKey eq 'Your Row Key'");
        var result = table.ExecuteQuery(query);

对我来说,这听起来还是有希望的。。我没有看到只接受行键的检索重载——但是您的答案表明有类似的情况。检索操作仅用于检索单个实体。请看我的最新答案。谢谢。我知道我只需要一个答案(我的行键是唯一的)——是否可以在检索时执行类似的操作?您提到您的表中只有两个分区键。在这种情况下,您可以使用检索操作。尝试使用第一个分区键和行键组合。如果结果为空,则尝试使用第二个分区键和行键组合。这就是OP中的内容。。唉,我真的只是在寻找一种分区不变的方法来跳过编译0-1个实体的列表,然后转换为单个实体或null。。当我事先知道这个列表永远不会是复数的时候