Azure表存储-检索与部分行键匹配的所有实体
我正在学习Azure表存储,我能够毫无问题地保存和检索实体。但是,我想做以下几点。假设我有行键(都具有相同的分区键),如下所示:Azure表存储-检索与部分行键匹配的所有实体,azure,azure-storage,Azure,Azure Storage,我正在学习Azure表存储,我能够毫无问题地保存和检索实体。但是,我想做以下几点。假设我有行键(都具有相同的分区键),如下所示: KJV-C1-V1 KJV-C1-V2 KJV-C1-V3 KJV-C2-V1 KJV-C2-V2 KJV-C2-V3 我希望能够在.NET C#中执行两种类型的查询: 检索行键以“KJV-C1”开头的所有实体 检索行键中包含“-C1-”的所有实体 我更希望能够做到这一点,而不必读取分区中的所有实体并过滤那些与我正在寻找的模式不匹配的实体。Azure表存储查询是否可
KJV-C1-V1
KJV-C1-V2
KJV-C1-V3
KJV-C2-V1
KJV-C2-V2
KJV-C2-V3
我希望能够在.NET C#中执行两种类型的查询:
PartitionKey eq 'your partition key' and (RowKey ge 'KJV-C1' and RowKey lt 'KJV-C2')
检索行键中包含“-C1-”的所有实体
不幸的是,这是不可能的。您必须在客户端获取所有实体并过滤数据
检索行键以“KJV-C1”开头的所有实体
这是可能的。OData查询示例:
PartitionKey eq 'your partition key' and (RowKey ge 'KJV-C1' and RowKey lt 'KJV-C2')
检索行键中包含“-C1-”的所有实体
不幸的是,这是不可能的。您必须在客户端获取所有实体并过滤数据。您不能在键上执行类似contains()的操作。但由于它支持CompareTo(“”)方法,您需要稍微修改表设计 维护多个分区键,而不是单个分区键。您可以简单地将行键的“KJV”部分推送到分区键。然后以C1-V1、C1-V2作为行键开始 那么,如果你愿意
请注意,表存储不允许所有LINQ操作,有时您需要在设计表键时牢记大多数查询。您不能在键上执行类似contains()的操作。但由于它支持CompareTo(“”)方法,您需要稍微修改表设计 维护多个分区键,而不是单个分区键。您可以简单地将行键的“KJV”部分推送到分区键。然后以C1-V1、C1-V2作为行键开始 那么,如果你愿意
请注意,表存储不允许所有LINQ操作,有时您需要在设计表键时牢记大多数查询。Azure表和查询不会混合太多。我的意思是你可以做一些查询,但最终,它是一个键值存储。你在查询中尝试过使用
entity.RowKey.StartsWith(“KJV-C1”)
?请注意,与rdbms相比,所有这些类型的查询都比较慢。Azure表和查询不会混合太多。我的意思是你可以做一些查询,但最终,它是一个键值存储。你在查询中尝试过使用entity.RowKey.StartsWith(“KJV-C1”)
?请注意,与rdbms相比,所有这些类型的查询都比较慢。