使用 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 后,需要在客户端上应用任何查询。