2014-03-30 2 views
0

안녕하세요, 새 프로젝트를 시작하고 컴파일 된 쿼리를 내 dal에 추가하고 싶지만이 오류가 발생하는 이유는 무엇입니까? 나도ADO.NET Entityframework 컴파일 된 쿼리

유형 'DataAccessLayer.entities'이 제네릭 형식 또는 메서드의 형식 매개 변수 'TArg0'로 사용할 수 없습니다

'System.Data.Objects.CompiledQuery.Compile (시스템 여기에 어떤 답을 찾을 수 없습니다 .Linq.Expressions.Expression>) '. 'DataAccessLayer.entities'에서 'System.Data.Objects.ObjectContext'로의 암시 적 참조 변환은 없습니다.

는 저는 여기 CompiledQuery는 ObjectContext를 작동

using System; 
using System.Data.Objects; 
using System.Linq; 
+0

위의 람다 식에서 정의한'entities' 유형이 DbContext에서 파생 되었습니까? –

+0

예 .... 그렇습니다. –

답변

1

를 사용하여 이러한 네임 스페이스 내 코드

public static Func<entities, string, IQueryable<user>> 
      UserById = CompiledQuery.Compile((entities db, string id) => db.users.Where(u => u.id == id)); 

입니다. EF 4 또는 4.1을 시작하면 개체는 ObjectContext 대신 DbContext에서 파생되기 시작했습니다.

(DbContext를 사용하는) 최신 EF 프레임 워크를 사용해야하며이 쿼리는 이전에 (ObjectContext) 시간이 걸렸을 것입니다.

귀하의 .NET & EF 버전을 알려주십시오. 최신 .NET 및 EF 버전은 컴파일 된 쿼리의 자동 캐싱을 지원하므로 명시 적 캐싱이 문제가 될 수 있습니다.

+0

5.0.0을 사용하고 있습니다. –