使用ServiceStack AutoQuery在复杂属性上添加条件

时间:2015-12-05 21:15:18

标签: c# servicestack ormlite-servicestack

我需要为支持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可以正常工作。任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您不能对像List<string>这样的blob复杂类型属性执行服务器端SQL查询。在从db返回结果并将其反序列化为类型化POCO之后,需要在客户端上应用任何查询。