Turn off EF change tracking for any instance of the context

Karl Anderson picture Karl Anderson · Sep 20, 2013 · Viewed 48.6k times · Source

I have a context to a read-only database for reporting and I am writing lots of code, like this:

using (var context = new ReportingContext())
{
    var reportXQuery = context.ReportX.AsNoTracking();

    // Do stuff here with query...
}

Is there a way to set the AsNoTracking bit so that just newing up the ReportingContext above would automatically use AsNoTracking instead of needing to remember to explicitly call it every query?

Answer

Admir Tuzović picture Admir Tuzović · Sep 20, 2013

Try changing your context constructor to this:

public ReportingContext()
{
this.Configuration.AutoDetectChangesEnabled = false;
}

EDIT:

This will after all not help you, as stated on Arthur's blog, it is usable only in particular scenarios:

http://blog.oneunicorn.com/2012/03/12/secrets-of-detectchanges-part-3-switching-off-automatic-detectchanges/