web-dev-qa-db-ger.com

Deaktivieren Sie die EF-Änderungsverfolgung für jede Instanz des Kontexts

Ich habe einen Kontext zu einer schreibgeschützten Datenbank für die Berichterstellung und schreibe viel Code wie folgt:

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

    // Do stuff here with query...
}

Gibt es eine Möglichkeit, das Bit AsNoTracking so zu setzen, dass nur newdas Aufrufen des obigen ReportingContext automatisch AsNoTracking verwendet, anstatt sich daran zu erinnern, es explizit aufzurufen jede Abfrage?

24
Karl Anderson

Versuchen Sie, Ihren Kontextkonstruktor folgendermaßen zu ändern:

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

EDIT:

Dies wird Ihnen schließlich nicht helfen, wie auf Arthurs Blog angegeben, es ist nur in bestimmten Szenarien verwendbar:

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

19
Admir Tuzović