我有一个Generic Repository类,如下所示:
我在这个类中有很多方法,我希望所有类都有一个额外的参数,它将采用Func<T, T>
或其他(但对所有人来说都相同)用于选择列因为大部分时间我都不会在查询时拉出所有列。
我想知道如何更有效地执行此操作,而不是在所有方法中添加一个参数或为每个方法创建重载?
答案 0 :(得分:3)
为实体提供一个通用参数,为投影类型提供一个参数:
List<TResult> Get<TEntity, TResult>(Expr<Func<TEntity, TResult>> selector)
考虑暴露一个可查询的内容:
IQueryable<T> Query<T>() { return _context.GetTable<T>(); }
这使得所有这些问题都消失了。您的Get*
方法不会增加任何价值。他们只是限制了可能的查询模式。