0

自動コンパイルをオフにする方法について、インターネット上で多くの例を目にします。

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

ただし、このプロパティは db コンテキストのどこにも表示されません。ContextOptionsさえありません。

それをIObjectContextAdapterにキャストするために言及されたインターネット上のどこかにあり、そこでContextOptionsを取得しますが、それでもそのプロパティは取得しません

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

DbContext と DbSets を使用する EF5 の既定の世代を使用していることに注意してください。

オフにするにはどうすればよいですか?また、これは RTM であり、ベータではなく、.NET 4.5 の RC でもあることに注意してください。

4

1 に答える 1

2

これはパフォーマンスが良くなるよりも悪くなる可能性が高いため、これはお勧めしません。このオプションは、 ObjectContextレベルではなく、 ObjectQueryレベルでのみ使用できます。

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

抜粋

クエリプランキャッシュは、同じAppDomain内のObjectContextインスタンス間で共有されます。クエリプランのキャッシュを利用するために、ObjectContextインスタンスを保持する必要はありません。

于 2012-10-29T21:17:04.127 に答える