我将以下模型作为Web API控制器操作的输入
public class Query
{
public string Filter { get; set; }
public string OrderBy { get; set; }
public int? Skip { get; set; }
public int? Top { get; set; }
}
此处使用的过滤器采用OData过滤器格式。
我将相同的模型传递给数据访问层以过滤数据库中的实体。是否可以使用数据访问层中的OData库直接在EF实体上应用'Filter
,OrderBy
,Skip
和Top
?
答案 0 :(得分:1)
我不确定你究竟在问什么,但我可以假设你的问题是"解析"该解决方案的一部分:)
我的答案是'是',但这有点棘手。
您可以使用ODataQueryOptionParser类。使用此解析器,您可以将过滤器表达式解析为FilterClause。 使用FilterBinder,您现在可以将FilterClause解析为Expression(谓词),并将该表达式用作dbset中Where方法的参数。 为了实现这一切,您必须为解析器提供EDM模型。