使用 ServiceStack AutoQuery 在复杂属性上添加条件
Adding conditions on complex properties with ServiceStack AutoQuery
我需要为支持 AutoQuery 的 API 请求添加过滤,因此在 this SO answer 的基础上,使用 q.And
添加条件。问题是 POCO 属性之一是 List<string>
并且似乎做一个简单的 Contains()
是行不通的。这是我所拥有的一个简单示例:
public class PocoObject
{
public int Id { get; set; }
public List<string> Names { get; set; }
}
我的服务是这样的:
public object Get(PocoObjects request)
{
var q = AutoQuery.CreateQuery(request, Request.GetRequestParams());
if (someCondition)
{
q.And(x => x.Names.Contains(request.TargetName));
}
return AutoQuery.Execute(request, q);
}
问题是,我收到这样的错误:
variable 'x' of type 'TestProject.ServiceModel.Types.PocoObject' referenced from scope '', but it is not defined
如果我将 Contains
更改为对另一个 属性 进行更简单的相等比较,AutoQuery 会起作用。有什么想法可以实现吗?
您不能在服务器端 SQL 查询像 List<string>
这样的斑点复杂类型 属性。从数据库返回结果并将其反序列化回类型化 POCO 后,需要在客户端上应用任何查询。
我需要为支持 AutoQuery 的 API 请求添加过滤,因此在 this SO answer 的基础上,使用 q.And
添加条件。问题是 POCO 属性之一是 List<string>
并且似乎做一个简单的 Contains()
是行不通的。这是我所拥有的一个简单示例:
public class PocoObject
{
public int Id { get; set; }
public List<string> Names { get; set; }
}
我的服务是这样的:
public object Get(PocoObjects request)
{
var q = AutoQuery.CreateQuery(request, Request.GetRequestParams());
if (someCondition)
{
q.And(x => x.Names.Contains(request.TargetName));
}
return AutoQuery.Execute(request, q);
}
问题是,我收到这样的错误:
variable 'x' of type 'TestProject.ServiceModel.Types.PocoObject' referenced from scope '', but it is not defined
如果我将 Contains
更改为对另一个 属性 进行更简单的相等比较,AutoQuery 会起作用。有什么想法可以实现吗?
您不能在服务器端 SQL 查询像 List<string>
这样的斑点复杂类型 属性。从数据库返回结果并将其反序列化回类型化 POCO 后,需要在客户端上应用任何查询。