2

我正在尝试更改自动查询上的一些字段以使用或进行查询(它是一个搜索许多字段的搜索框)。尽管根据文档应该这样做,但这似乎不起作用。

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 布尔项组合以进一步过滤结果集。通过指定 Term=QueryTerm.Or 修饰符,可以将其更改为在字段级别使用 OR,例如:

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

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

4

1 回答 1

2

问题是由于使用了[QueryDbField]依赖于“%Contains”等隐式约定的 a:

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]你会覆盖隐式约定。我已经更改了此提交中的行为,它现在合并了两者的行为[QueryDbField]和匹配的隐式约定,因此您的查询现在应该按预期工作。

此更改从 v4.5.7+ 开始可用,现在可在 MyGet 上使用

于 2017-03-02T16:36:55.190 回答