按实体类型限制Azure TableQuery

时间:2015-07-03 21:45:02

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

我在Azure表存储中有一个表(实际上是在模拟器中),它包含多个实体类型,其中两个是AzureRuleInfo和AzureCostCodeInfo。我想从同一个分区中提取一系列AzureRuleInfo和AzureCostCodeInfo实体。

我开始时有两个表查询,每个类型一个,假设new TableQuery<T>()只返回类型为T的实体 - 但它似乎会拉回与分区键匹配的所有内容。

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


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

我的问题是:

  • API是否提供按实体类型查询的方式? (最好不必添加像“MyEntityType”这样的自定义实体属性。)
  • 或者我最好还是撤回所有内容并将结果过滤成两个独立的集合?

这是个人应用程序,我第一次涉足Azure表存储,因此我没有任何特定的设计驱动程序,如性能。

1 个答案:

答案 0 :(得分:1)

我们没有为实体类型公开任何专门字段。它需要以自定义方式处理。

您是否考虑过使用以下文章https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#working-with-heterogeneous-entity-types中的异构实体类型部分。

您可以将实体类型添加到RowKey或使用单独的属性来存储实体类型(我认为您不希望这样做)。

谢谢,