Freitag, 2. März 2012

LINQ Abfragen beschleunigen

1. DataContext auf das nötigste beschränken

Legt euren DataContext nicht auf die komplette Datenbank. Behandelt Ihn je nach gebraucht. Man kann trotzdem noch den gleichen Datenbankvebrindungs String benutzen.

2.  Object Tracking abschalten

Wenn es nicht genutzt wird: abschalten!

using (NorthwindDataContext context = new NorthwindDataContext())
{
  context.ObjectTrackingEnabled = false;
}

3. CompiledQuery benutzen

Wandelt eure Querys in Compiled Querys um. Beim ersten aufruf werden diese compiled und man kann Sie in einer static Variable weiter nutzen.

Func<MyDatabaseDataContext, IEnumerable<MyTable>> func =
CompiledQuery.Compile<MyDatabaseDataContext, IEnumerable<MyTable>>
   ((MyDatabaseDataContext context) => context.MyTables.
      Where<MyTable>(x => x.MyProperty > someValue));

4. DataLoadOptions benutzen

DataLoadOptions options = new DataLoadOptions();
  options.AssociateWith<Mytable>( x => x.MyPropery.Where<MyProperty>(y => !y.Available));
  context.LoadOptions = options;

5. Nur das Laden, was benötigt wird

context.Products
           .Take<Product>(pageSize)
           .Skip<Product>(startingPageIndex * pageSize)
           .ToList<Product>();



Keine Kommentare:

Kommentar veröffentlichen