ServiceStack AutoQuery和Field Term Or

时间:2017-03-02 15:28:26

标签: servicestack autoquery-servicestack servicestack-autoquery

我正在尝试将自动查询中的一些字段更改为使用或(它是搜索许多字段的搜索框)进行查询。虽然根据它应该的文档,这似乎不起作用。

public class PropertyGet : QueryDb<DomainModel.Property>
{
    [QueryDbField(Term=QueryTerm.Or)]
    public string NameContains { get; set; }

    [QueryDbField(Term=QueryTerm.Or)]
    public string CityContains {get;set;}
}

但是这样做:

[QueryDb(QueryTerm.Or)]
 public class PropertyGet : QueryDb<DomainModel.Property>
    {
        public string NameContains { get; set; }
        public string CityContains {get;set;}
    }
  

更改查询行为

     

默认情况下,查询的作用类似于过滤器,并且每个条件都会合并   使用AND布尔项来进一步过滤结果集。这可以   通过指定更改为在字段级别使用OR   Term = QueryTerm.Or修饰符,例如:

     

[QueryDbField(期限= QueryTerm.Or)]   public string LastName {get;组; }

如何进行字段级别或查询?

1 个答案:

答案 0 :(得分:1)

问题是由于使用了[QueryDbField]依赖于{%3}}的“{包含”}:

public class PropertyGet : QueryDb<DomainModel.Property>
{
    [QueryDbField(Term=QueryTerm.Or)]
    public string NameContains { get; set; }

    [QueryDbField(Term=QueryTerm.Or)]
    public string CityContains {get;set;}
}

使用[QueryDbField]时,您将覆盖隐式约定。我已经更改了implicit convention中的行为,它现在合并了[QueryDbField]和匹配的隐式约定的行为,因此您的查询现在应该按预期工作。

此更改可从v4.5.7 +现在this commit获得。