2012-09-27 5 views
0

테이블 네비게이션을 사용할 때 Entity Framework 및 리포지토리 패턴을 사용하고 있습니다. 첫 번째 개체를 가져 와서 필드를 참조 할 때 두 개의 쿼리가 실행되는 것을 확인했습니다. 네비게이션 객체. 내 탐색 속성에이 기술을 사용하여 데이터베이스에 많은 관계가 있으므로 성능 오버 헤드가 발생할 수 있습니다.다중 포함 엔티티 프레임 워크 및 리포지토리 패턴 사용

나는 Include(string tableName) 방법을 조사해 보았습니다.이 명령은 (일반 RP를 사용하지 않은 경우) 실제로 작동 할 수 있지만이 명령은 하나의 테이블 이름 만 사용합니다. 나는 하나의 포함을위한 내 저장소 패턴을 classs에서 EntityObject으로 변경함으로써이를 복제 할 수 있었지만 저장소 패턴을 사용하여 하나의 쿼리에 여러 개의 include를 포함시킬 수 있습니까 ?? 당신은 체인 당신은 포함 할 수

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); 
    } 
} 

답변

8

:이 컴파일되지

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); 
} 
+0

,'쿼리 = query.Include이 (INC)'이 방법을 된 IQueryable가 포함되어 있지 않습니다 여기

내 코드입니다 ''Include''라고 불립니다. –

+0

이미 추가 된'using System.Data.Entity' – heavyd

+0

을 추가해야 할 수도 있습니다. –

관련 문제