我正在使用实体框架和存储库模式进行所有数据访问,当使用表导航时,我注意到当我获得第一个对象并引用导航对象中的字段时正在运行 2 个查询。由于我在数据库中有很多关系,将这种技术用于我的导航属性可能会导致性能开销。
我研究了这个Include(string tableName)
方法,这会很好用(如果我没有使用通用 RP),但这只需要一个表名。我已经设法通过更改我的 where fromclasss
来在我的存储库模式中为一个包含复制此内容,EntityObject
但是如何使用存储库模式在一个查询中包含多个包含?
这是我的代码:
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);
}
}