我正在使用Azure Table Storage进行我的服务,我正在尝试为其引入一个软删除功能。我将向标记为删除的条目添加属性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
属性存在的记录,但是是否为假?
我考虑过擦洗数据库并将IsMarkedForDeletion添加到所有记录中,或者在执行查询后自己过滤结果,但我想在查询本身中这样做,这样在创建时我很容易分段请求和分页结果。
答案 0 :(得分:1)
我认为这是不可能的,您可以尝试检查该字段是否等于null,我不知道这是否会解决您的问题。但通常表存储没有架构,并且不打算用于查询分区键和行键以外的字段。我个人认为你可以通过获得给定PK + RK的所有结果并在以后过滤它们来获得更快的结果,而不是将其留给表存储来过滤不在PK + RK对中的字段。