我正在使用 Azure 表存储作为我的服务,并尝试为其引入软删除功能。我将向标记为删除的条目添加属性 IsMarkedForDeletion
。当我查询时,我只需要未标记为删除的条目。在未删除的字段中,IsMarkedForDeletion
甚至不会存在。
我尝试过以下方法:
<...query...> and (IsMarkedForDeletion ne true)
<...query...> and (IsMarkedForDeletion eq false)
<...query...> and (not (IsMarkedForDeletion ne false))
<...query...> and (not (IsMarkedForDeletion eq true))
<...query...> and (not (IsMarkedForDeletion eq NULL)) => returns 501 Not Implemented
它们都没有显示其中没有 IsMarkedForDeletion
属性的条目。
我该怎么做才能获取没有 IsMarkedForDeletion
的记录以及 IsMarkedForDeletion
属性存在但为 false 的记录?
我曾考虑过清理数据库并将 IsMarkedForDeletion 添加到所有记录中,或者在执行查询后自己过滤结果,但我想在查询本身中执行此操作,以便在创建时对我来说很容易分段请求并对结果进行分页。
最佳答案
我认为这是不可能的,您可以尝试检查该字段是否等于 null,我不知道这是否可以解决您的问题。但通常表存储没有模式,并且不打算用于查询分区键和行键以外的字段。我个人认为,通过获取给定 PK+RK 的所有结果并稍后将其过滤掉,而不是将其保留到表存储中以过滤不在 PK+RK 对中的字段,您会更快地获得结果。
关于database - Azure 表存储查询基于可能并非所有记录都存在的属性的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885466/