ServiceStack AutoQuery 和 Field Term Or
ServiceStack AutoQuery and Field Term Or
我正在尝试将自动查询的一些字段更改为使用 or 进行查询(它是一个搜索许多字段的搜索框)。这似乎不起作用,尽管根据它应该的文档。
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;}
}
Changing Querying Behavior
By default queries act like a filter and every condition is combined
with AND boolean term to further filter the result-set. This can be
changed to use an OR at the field-level by specifying
Term=QueryTerm.Or modifier, e.g:
[QueryDbField(Term=QueryTerm.Or)]
public string LastName { get; set; }
如何进行字段级别或查询?
问题是由于使用了依赖于 implicit convention 的 [QueryDbField]
,如“%Contains”:
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]
时,您将覆盖隐式约定。我已经更改了 this commit 中的行为,它现在合并了 [QueryDbField]
和匹配的隐式约定的行为,因此您的查询现在应该按预期工作。
此更改适用于 v4.5.7+,即现在 available on MyGet。
我正在尝试将自动查询的一些字段更改为使用 or 进行查询(它是一个搜索许多字段的搜索框)。这似乎不起作用,尽管根据它应该的文档。
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;}
}
Changing Querying Behavior
By default queries act like a filter and every condition is combined with AND boolean term to further filter the result-set. This can be changed to use an OR at the field-level by specifying Term=QueryTerm.Or modifier, e.g:
[QueryDbField(Term=QueryTerm.Or)] public string LastName { get; set; }
如何进行字段级别或查询?
问题是由于使用了依赖于 implicit convention 的 [QueryDbField]
,如“%Contains”:
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]
时,您将覆盖隐式约定。我已经更改了 this commit 中的行为,它现在合并了 [QueryDbField]
和匹配的隐式约定的行为,因此您的查询现在应该按预期工作。
此更改适用于 v4.5.7+,即现在 available on MyGet。