实体框架使编译查询通用

时间:2013-10-21 09:03:07

标签: c# entity-framework generics compiled-query linq.compiledquery

我使用实体框架,我试图使这样的查询通用,因此它可以用于任何实体类型(假设每个实体都具有属性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};
}

感谢您的想法:)

1 个答案:

答案 0 :(得分: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&amp; 6)产生很大的不同。

在第一个查询中,建立了连接,可能需要一些时间。