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

时间:2017-08-03 21:44:34

标签: c# ormlite-servicestack servicestack-autoquery autoquery-servicestack

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

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

所以,鉴于我们目前的设置:

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

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

我正在设置牛奶和饼干,希望mythz掉落并留下礼物......当然,任何帮助都是值得赞赏的!

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用其中一种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> {}