3

엔티티 프레임 워크를 사용하고 그러한 쿼리를 일반화하려고 시도 했으므로 각 엔티티가 속성이 int Id 인 가정하에 모든 엔티티 유형에 사용할 수 있습니다.엔티티 프레임 워크는 컴파일 된 쿼리 일반을 만듭니다.

나는 이런 식으로 뭔가를 시도하지만 수집 ctx.TEntity이나 뭐 비슷한는 없다 :

public class Queries<TEntity> where TEntity : AbstractEntity 
{ 
    public Func<AdventureWorksEntities, int, TEntity> getQuery() { 
    return 
    CompiledQuery.Compile<AdventureWorksEntities, int, Entity>(
    (ctx, num) => ctx.TEntity.First(x => x.Id>num)); 
    } 
} 

AbstractEnitity : 당신의 아이디어에 대한

public abstract class AbstractEntity { 

[Key] 
public int Id {get; set}; 
} 

감사합니다 :)

+0

Entity Framework 버전은 무엇입니까? ObjectContext 또는 DbSet을 사용합니까? –

+0

EF6 코드를 먼저 사용하고 ObjectContext와 DbContext에 모두 액세스 할 수 있습니다. DbSet 내 DbContext 클래스의 속성으로 정의했습니다. –

+1

DbContext를 사용하여 컴파일 된 쿼리를 시도했지만 성공하지 못했습니다 (지원되지 않으며 해결 방법도 나에게 적합하지 않음). 이 링크를 잘 보셨나요? http://blogs.msdn.com/b/efdesign/archive/2011/06/30/auto-compiled-linq-queries-entity-framework-june-2011-ctp.aspx? –

답변

4

내가 시도 DbContext로 컴파일 된 쿼리 (성공하지 못함) (지원되지 않으며 해결 방법도 나에게 적합하지 않음). 이 링크를 씹어 봤니? http://blogs.msdn.com/b/efdesign/archive/2011/06/30/auto-compiled-linq-queries-entity-framework-june-2011-ctp.aspx?

이 기사는 http://social.msdn.microsoft.com/Forums/en-US/0c07e1d6-7db6-4348-b106-e576d3153b70/ef-40-compiled-queries-performance?forum=adonetefx입니다. 필자는 Compiled Queires를 사용하여 EF (5 & 6)의 최신 버전과 큰 차이를 만들지는 않는다고 생각합니다.

첫 번째 쿼리에서 연결이 설정되고 시간이 걸릴 수 있습니다.