Използвам Entity Framework и Repository Pattern за целия си достъп до данни, когато използвам навигация в таблици, забелязах, че се изпълняват 2 заявки, когато получих първия обект и препратка към поле в навигационен обект. Тъй като имам много релации в базата данни, използването на тази техника за моите навигационни свойства може да причини допълнителни разходи за производителност.
Разгледах метода Include(string tableName)
и това ще работи много добре (ако не използвах общ RP), но това отнема само едно име на таблица. Успях да репликирам това в моя модел на хранилище за едно включване, като промених моя where от classs
на 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);
}
}