【发布时间】:2019-03-21 04:43:30
【问题描述】:
我正在创建一个查询以包含过去 30 天的 Cosmos 实体:
var filter = TableQuery.GenerateFilterConditionForDate(
"Timestamp",
QueryComparisons.GreaterThanOrEqual,
DateTimeOffset.Now.Date.AddDays(-30));
接下来我使用这个过滤器创建一个查询:
var query = new TableQuery<ResponseEntity>().Where(filter);
接下来我执行查询:
var result = await table.ExecuteQuerySegmentedAsync(query, null);
但是,出于某种原因,result 始终包含零 (0) 个命中。
如果我在没有任何过滤器的情况下执行查询...
var query = new TableQuery<ResponseEntity>();
...我确实得到了所有实体。
查看生成的过滤器字符串,我觉得它没问题(在使用 Cosmos 的查询构建器时与 Azure 门户中的相同):
Timestamp ge datetime'2018-09-15T22:00:00.0000000Z'
基于Timestamp的查询有什么限制吗?
编辑: 尝试切换到新的 Microsoft.Azure.Cosmos.Table NuGet 包(当前处于预览状态,版本 0.9.1),但我仍然没有得到任何结果按Timestamp过滤。
【问题讨论】:
-
您好,我的回答对您有帮助吗?
-
@JayGong 我还没有机会尝试,但我无法立即看到任何重大差异?您是否还针对 .NET Core?您使用的是哪个版本的 Azure 存储 NuGet 包?
-
泰德,没关系,等着你的测试。我的示例代码刚刚在 .net 控制台测试应用程序中运行,我安装的 nuget 包是 Microsoft.Azure.Storage.Common 9.0.0.1-preview 和 Microsoft.Azure.CosmosDB.Table 2.0.0。
标签: .net-core azure-storage azure-cosmosdb