Zoeken…


Opmerkingen

Trackinggedrag bepaalt of Entity Framework al dan niet informatie over een entiteitinstantie in de change tracker bewaart. Als een entiteit wordt bijgehouden, blijven wijzigingen die in de entiteit worden gedetecteerd tijdens SaveChanges() in de database.

Zoekopdrachten bijhouden

  • Query's die entiteitstypen retourneren, worden standaard bijgehouden
  • Dit betekent dat u wijzigingen kunt aanbrengen in die entiteitsinstanties en deze wijzigingen kunt laten behouden door SaveChanges()

Voorbeeld:

  • De wijziging in de book wordt gedetecteerd en blijft tijdens SaveChanges() in de database bestaan.
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

No-tracking vragen

  • Geen trackingquery's zijn nuttig wanneer de resultaten worden gebruikt in een read-only scenario
  • Ze zijn quicker to execute omdat het niet nodig is om trackinginformatie voor wijzigingen in te stellen

Voorbeeld:

using (var context = new BookContext())
{
    var books = context.Books.AsNoTracking().ToList();
}

Met EF Core 1.0 kunt u ook het standaard volggedrag op context instance .

Voorbeeld:

using (var context = new BookContext())
{
    context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

    var books = context.Books.ToList();
}

Tracking en projecties

  • Zelfs als het resultaattype van de zoekopdracht geen entiteitstype is, worden de resultaten tracked by default als het resultaat contains entity

Voorbeeld:

  • In de volgende query, die een anonymous type retourneert, worden de instanties van Book in de resultatenset will be tracked

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Als het resultaat set does not elke bevat entity types, dan no tracking wordt uitgevoerd

Voorbeeld:

  • In de volgende query, die een anonymous type retourneert met enkele waarden van de entiteit (maar no instances van het daadwerkelijke entity ), is er geen tracking uitgevoerd.

    using (var context = new BookContext())
    {
       var book = context.Books.Select(b => new { Id = b.BookId, PublishedDate = b.Date });
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow