如何预编译实体框架代码优先查询?

时间:2011-06-21 13:58:40

标签: entity-framework entity-framework-4.1 ef-code-first

我遇到了我的实体框架代码优先查询的一些性能问题,我相信预编译可能就是答案。如果我使用“普通”实体框架,我只需使用CompiledQuery.Compile方法预先查询我的查询。但由于我有一个DbContext而不是ObjectContext,我无法让它工作。

我确实认识到DbContext是一个IObjectContextAdapter,它允许我访问ObjectContext,但我找不到让我从我的预编译查询中运行的对象上下文中获取IQueryable的方法。我尝试使用CreateObjectSet,但是当EF试图运行查询时,它抱怨它无法将该方法转换为SQL。

那么针对Code-First DbContext预编译LINQ查询的最佳方法是什么?

2 个答案:

答案 0 :(得分:11)

这可能会通过very first CTP EFv4.2 EF vNext(当前位于auto-compiled LINQ queries)中解决。

答案 1 :(得分:8)

从官方公告中可以看出:

“没有来自DbContext的编译查询支持 不幸的是,由于我们在.NET Framework 4.0中提供的编译查询功能存在一些技术限制,我们无法通过DbContext API支持编译查询。我们意识到这是一个痛苦的限制,并将在下一个版本中实现这一点。 “

Link