AutoQuery / Ormlite-servicestack:我可以过滤掉 QueryDb class 上的软删除吗?

AutoQuery / Ormlite-servicestack: Can I filter out soft deletes on a QueryDb class?

我们有一些使用 Ormlite/Servicestack 构建的服务,我们主要使用 QueryData 和自定义逻辑提取数据库对象和 POCO。

但是,我们有一个 table 实际上不需要在逻辑上进行扩展,并且可以使用 AutoQuery 和 URL 参数直接从前端查询数据库。但是,此 table 包含一个 isDeleted 列来跟踪软删除。前端不应该有任何软删除的项目,我们认为前端不应该能够获得这些记录(即不应该负责查询 API 和 ?&isDeleted=false) .

因此,鉴于我们当前的设置:

[Route("/query/thing/stuff", HttpMethods.Get)]
public class secret_table: QueryDb<secret_table>
{
}

...是否可以为 QueryDb<> 实施过滤器以自动排除 isDeleted=true 的记录?这是否只能应用于此 table/class?

我正在准备牛奶和饼干,希望 mythz 顺便过来留下礼物...当然,我们将不胜感激!

您是否尝试过使用其中一种不同的 extensibility options

您应该也可以使用 OrmLite's Select Filter to enable Soft Deletes,例如:

SqlExpression<secret_table>.SelectFilter = q => q.Where(x => x.IsDeleted != true);

请注意,您的 AutoQuery DTO 不应重复使用 Table 的名称作为 DTO 的名称,请使用不同的名称,例如:

[Route("/query/thing/stuff", HttpMethods.Get)]
public class QuerySecretTable: QueryDb<secret_table> {}