BreezeJS:在Controller中应用客户端查询

时间:2015-04-14 07:16:47

标签: entity-framework breeze

无论如何在控制器中应用用户查询以便对最终结果集执行某些操作?

采用以下示例:

[HttpGet]
public IQueryable<Container> Containers(bool populate)
{
    var containers = _contextProvider.Context.Containers;
    if (populate)
    {
         foreach (var container in containers)
         {
             container.Populate(_contextProvider.Context);
         }
    }
    return containers;
}

这里的问题是我对此表中的所有记录执行此Populate()操作,而不仅仅是用户请求的记录,因为他们的查询尚未应用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要将ODataQueryOptions传递给您的方法,这样您就可以手动应用它们,而不是让WebApi在出路时应用它们。

[HttpGet]
public IQueryable<Container> Containers(ODataQueryOptions options, bool populate)
{
    IQueryable<Container> containers = _contextProvider.Context.Containers;
    containers = options.ApplyTo(Containers).Cast<Container>();
    if (populate)
    {
        foreach (var container in containers)
        {
            container.Populate(_contextProvider.Context);
        }
    }
    return containers;
}