Suche…


Bemerkungen

Mit dem Verfolgungsverhalten wird gesteuert, ob Entity Framework Informationen zu einer Entitätsinstanz in seinem Änderungs-Tracker speichert. Wenn eine Entität verfolgt wird, werden alle in der Entität festgestellten Änderungen während SaveChanges() in der Datenbank SaveChanges() .

Abfragen verfolgen

  • Abfragen, die Entitätstypen zurückgeben, werden standardmäßig verfolgt
  • Das bedeutet, dass Sie Änderungen an diesen Entitätsinstanzen vornehmen können und diese Änderungen durch SaveChanges()

Beispiel:

  • Die Änderung des book Bewertung wird nachgewiesen werden , und beharrte auf die Datenbank während SaveChanges() .
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

No-Tracking-Abfragen

  • Keine Verfolgungsabfragen sind nützlich, wenn die Ergebnisse in einem read-only Szenario verwendet werden
  • Sie sind quicker to execute da keine Änderungsnachverfolgungsinformationen eingerichtet werden müssen

Beispiel:

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

Mit EF Core 1.0 können Sie auch das Standardverfolgungsverhalten auf context instance ändern.

Beispiel:

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

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

Tracking und Projektionen

  • Auch wenn der Ergebnistyp der Abfrage kein Entitätstyp ist, wird das Ergebnis, wenn contains entity tracked by default weiterhin tracked by default

Beispiel:

  • In der folgenden Abfrage, die einen anonymous type zurückgibt, werden die Instanzen von Book in der Ergebnismenge will be tracked

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Wenn die Ergebnismenge does not keine enthalten entity - Typen, dann no tracking durchgeführt

Beispiel:

  • In der folgenden Abfrage, die einen anonymous type mit einigen Werten der Entität zurückgibt (jedoch no instances des tatsächlichen entity ), wird keine Nachverfolgung durchgeführt.

    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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow