Czytam here, że podczas kwerendy danych dla operacji odczytu, ustawienie ObjectTrackingEnabled
na false
daje nieco zwiększyć wydajność. Moje zapytania wyglądać następująco:ObjectTrackingEnabled i linq-to-sql
public return type TheQueryName (some parameters)
{
using (TheDC MyDC = new TheDC())
{
var TheQuery = (...).ToList();
return TheQuery;
}
}
1) Jeśli chcę dodać zwiększenia wydajności, mogę tylko dodać linię ObjectTrackingEnabled = true;
tuż przed linią var TheQuery = (...).ToList();
2) Ponadto, jeśli ustaw ObjectTrackingEnabled
na true
w zapytaniu, czy przed przywróceniem ustawienia trzeba ustawić wartość false, czy też ustawiam tylko ObjectTrackingEnabled
dla konkretnej instancji kontekstu danych, a po tym, jak utworzę nowy kontekst danych, wartość ObjectTrackingEnabled
zostanie przywrócona Wróć t o jego domyślny stan: false
?
Uwaga: Dodaję tylko ObjectTrackingEnabled = false;
do operacji odczytu.
Dzięki.
Jest to kolejny przydatny blogu o tym, jak można dostać CRAZY spod kontroli, jeśli jesteś niepotrzebnie śledzenia rzeczy: https://weblog.west-wind.com/posts/2014/dec/21/gotcha -entity-framework-gets-slow-in-long-iteration-loops –