禁用更改跟蹤和代理生成
如果你只想獲取資料,但不想修改任何內容,則可以關閉更改跟蹤和代理建立。這將提高你的效能並防止延遲載入。
不好的例子:
using(var context = new Context())
{
return await context.Set<MyEntity>().ToListAsync().ConfigureAwait(false);
}
好例子:
using(var context = new Context())
{
context.Configuration.AutoDetectChangesEnabled = false;
context.Configuration.ProxyCreationEnabled = false;
return await context.Set<MyEntity>().ToListAsync().ConfigureAwait(false);
}
在上下文的建構函式中關閉它們是特別常見的,特別是如果你希望在解決方案中設定它們:
public class MyContext : DbContext
{
public MyContext()
: base("MyContext")
{
Configuration.AutoDetectChangesEnabled = false;
Configuration.ProxyCreationEnabled = false;
}
//snip
}