Szukaj…


Uwagi

Zachowanie śledzenia kontroluje, czy Entity Framework zachowa informacje o instancji encji w swoim module do śledzenia zmian. Jeśli jednostka jest śledzona, wszelkie wykryte w niej zmiany zostaną utrwalone w bazie danych podczas SaveChanges() .

Śledzenie zapytań

  • Domyślnie zapytania zwracające typy jednostek są śledzone
  • Oznacza to, że możesz wprowadzać zmiany w tych instancjach encji, a zmiany te SaveChanges() przez SaveChanges()

Przykład:

  • Zmiana oceny book zostanie wykryta i utrwalona w bazie danych podczas SaveChanges() .
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

Zapytania bez śledzenia

  • Żadne zapytania śledzące nie są przydatne, gdy wyniki są używane w scenariuszu read-only do read-only
  • quicker to execute ponieważ nie trzeba konfigurować informacji o śledzeniu zmian

Przykład:

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

Za pomocą EF Core 1.0 możesz także zmienić domyślne zachowanie śledzenia na poziomie context instance .

Przykład:

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

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

Śledzenie i prognozy

  • Nawet jeśli typ wyniku zapytania nie jest typem encji, jeśli wynik contains entity typy contains entity , nadal będą tracked by default

Przykład:

  • W poniższym zapytaniu, które zwraca anonymous type , instancje Book w zestawie wyników will be tracked

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Jeśli zestaw wyników does not zawiera żadnych typów entity , wówczas no tracking jest wykonywane

Przykład:

  • W poniższym zapytaniu, które zwraca anonymous type z niektórymi wartościami z encji (ale no instances rzeczywistego typu entity ), nie jest wykonywane śledzenie .

    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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow