如何防止存储库中不需要的查询

时间:2018-05-17 07:10:09

标签: c# repository expression

我有一个存储库类,它将QueryConstraints对象作为参数来查询数据存储并返回所需实体的IEnumerable。存储库应该可以防止可能需要很长时间才能处理的查询。 QueryConstraints如下:

public class QueryConstraints<T>
{
    public Expression<Func<T, bool>> WhereClause { get; }
    public Expression<Func<T, bool>> SortClause { get; }
    public int Skip {get;}
    public int Take {get;}
    ...
    some other fields
}

当客户端创建QueryConstraints时,它应该将表达式分配给WhereClause和SortClause属性,并将对象传递给要检查和处理表达式的存储库的Find()方法。

我的问题是: 我知道可以使用表达式树来检查表达式的主体。但是,我不知道如何完全实现我的目的。例如,我想阻止没有可用于其字段的索引的查询。我该怎么做?

0 个答案:

没有答案