如何检索Azure表DB中的所有实体?

时间:2018-04-18 06:33:12

标签: azure azure-table-storage azure-tablequery

以下代码检索PartitionKey = "Smith"

的所有实体

如果我想消除此约束并返回表中的所有实体,我应该如何修改以下代码?

很抱歉,如果这似乎是一个愚蠢的问题,但我是C#和AzureDB的新手,并且官方网站上的教程和示例代码非常有限。

TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Smith"));

foreach (CustomerEntity entity in table.ExecuteQuery(query))
{
    Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
        entity.Email, entity.PhoneNumber);
}

1 个答案:

答案 0 :(得分:1)

您无法使用正在过滤所需内容的 where 属性。

请参阅以下代码:TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();

以下是完成的代码:

static void Main(string[] args)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
    CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

    CloudTable table = tableClient.GetTableReference("people");
    table.CreateIfNotExists();

    TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();
    foreach (CustomerEntity entity in table.ExecuteQuery(query))
    {
        Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
        entity.Email, entity.PhoneNumber);
    }
}

屏幕截图: enter image description here

  

但请记住,表服务在一次调用中最多返回1000个实体。如果表中有超过1000个实体可用,则返回一个继续令牌,可用于获取下一组实体。 ExecuteQuery方法实际上在内部处理此延续令牌,因此如果您因任何原因想要取消此操作,则无法执行此操作。

Gaurav说,你可以使用var queryResult = table.ExecuteQuerySegmented(new TableQuery<MyEntity>(), token);

有关详细信息,请参阅此reply