我们使用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掉落并留下礼物......当然,任何帮助都是值得赞赏的!
答案 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> {}