我在这个领域相当新,任何帮助表示赞赏
我在 Dynamodb 数据库中有一个名为 Tenant 的表,如下所示:“TenantId”是哈希主键,我没有其他键。我有一个名为“IsDeleted”的字段,它是布尔值
表结构
我正在尝试运行查询以获取未删除指定“TenantId”的记录(“IsDeleted == 0”)
我可以通过运行以下代码得到正确的结果:(返回 0 项)
var filter = new QueryFilter("TenantId", QueryOperator.Equal, "2235ed82-41ec-42b2-bd1c-d94fba2cf9cc");
filter.AddCondition("IsDeleted", QueryOperator.Equal, 0);
var dbTenant = await
_genericRepository.FromQueryAsync(new QueryOperationConfig
{
Filter = filter
}).GetRemainingAsync();
但是当我尝试使用以下代码片段获取它时没有运气(它返回也被删除的项目)(返回 1 个项目)
var queryFilter = new List<ScanCondition>();
var scanCondition = new ScanCondition("IsDeleted", ScanOperator.Equal, new object[]{0});
queryFilter.Add(scanCondition);
var dbTenant2 = await
_genericRepository.LoadAsync("2235ed82-41ec-42b2-bd1c-d94fba2cf9cc", new DynamoDBOperationConfig
{
QueryFilter = queryFilter,
ConditionalOperator = ConditionalOperatorValues.And
});
知道为什么 ScanCondition 没有效果吗?
后来我也试过这个:(抛出异常)
var dbTenant2 = await
_genericRepository.QueryAsync("2235ed82-41ec-42b2-bd1c-d94fba2cf9cc", new DynamoDBOperationConfig()
{
QueryFilter = new List<ScanCondition>()
{
new ScanCondition("IsDeleted", ScanOperator.Equal, 0)
}
}).GetRemainingAsync();
它抛出:“消息”:“必须为表租户定义一个范围键或 GSI 索引”
为什么它抱怨范围键或索引?我打电话
public AsyncSearch<T> QueryAsync<T>(object hashKeyValue, DynamoDBOperationConfig operationConfig = null);