通用存储库类中的列选择

时间:2014-03-14 10:45:12

标签: c# linq entity-framework repository-pattern unit-of-work

我有一个Generic Repository类,如下所示:

enter image description here

我在这个类中有很多方法,我希望所有类都有一个额外的参数,它将采用Func<T, T>或其他(但对所有人来说都相同)用于选择列

我想知道如何更有效地执行此操作,而不是在所有方法中添加一个参数或为每个方法创建重载?

1 个答案:

答案 0 :(得分:3)

为实体提供一个通用参数,为投影类型提供一个参数:

List<TResult> Get<TEntity, TResult>(Expr<Func<TEntity, TResult>> selector)

考虑暴露一个可查询的内容:

IQueryable<T> Query<T>() { return _context.GetTable<T>(); }

这使得所有这些问题都消失了。您的Get*方法不会增加任何价值。他们只是限制了可能的查询模式。