Multiple includes using Entity Framework and Repository Pattern
我正在使用实体框架和存储库模式进行所有数据访问,当使用表格导航时,我注意到当我获得第一个对象并引用导航对象中的字段时正在运行 2 个查询。由于我在数据库中有很多关系,将这种技术用于我的导航属性可能会导致性能开销。
我已经研究了
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class GenericRepository< T > : IRepository< T > where T : EntityObject, new() { private Entities _Context; private ObjectSet< T > _ObjectSet; public IQueryable< T > FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, string include) { // This works OK return this._ObjectSet.Include(include).Where(predicate); } public IQueryable< T > FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, param string[] include) { // This will not work but is what I am trying to do return this._ObjectSet.Include(include).Where(predicate); } } |
您可以链接您的包含:
1 2 3 4 5 6 7 8 9 10 | public IQueryable< T > FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, param string[] include) { IQueryable< T > query = this._ObjectSet; foreach(string inc in include) { query = query.Include(inc); } return query.Where(predicate); } |