实体框架5在RTM中关闭自动编译?

时间:2012-10-29 20:48:33

标签: entity-framework entity-framework-5

我在互联网上看到很多关于如何使用以下方式关闭自动编译的示例:

using (var db = new SampleEntities())
{
    db.ContextOptions.DefaultQueryPlanCaching = false;
}

但是,我无法在db上下文的任何位置看到此属性。它甚至没有ContextOptions。

互联网上有一处提到将它投射到IObjectContextAdapter,我得到了ContextOptions,但仍然不是那个属性

((IObjectContextAdapter)db).ObjectContext.ContextOptions.?

请注意,我在EF5中使用默认生成,它使用DbContext和DbSets。

如何关闭它?另请注意,这是RTM,而不是beta,或.NET 4.5的RC

1 个答案:

答案 0 :(得分:2)

我不建议这样做,因为这很可能会产生比更好的性能更差的表现。此选项仅在ObjectQuery级别而非ObjectContext级别提供。

var objectContext = ((IObjectContextAdapter)db).ObjectContext;
var objectSet = objectContext.CreateObjectSet<AccountsOnMonth>();
objectSet.EnablePlanCaching = false;

Exerpt

  

查询计划缓存在同一AppDomain中的ObjectContext实例之间共享。您不需要保留ObjectContext实例以从查询计划缓存中受益。