Ricerca…


Osservazioni

Il monitoraggio del comportamento controlla se Entity Framework manterrà le informazioni su un'istanza di entità nel suo tracker delle modifiche. Se viene rilevata un'entità, tutte le modifiche rilevate nell'entità verranno mantenute nel database durante SaveChanges() .

Tracciamento di domande

  • Per impostazione predefinita, le query che restituiscono tipi di entità eseguono il tracciamento
  • Ciò significa che è possibile apportare modifiche a tali istanze di entità e mantenere tali modifiche persistenti da SaveChanges()

Esempio :

  • La modifica alla valutazione del book verrà rilevata e mantenuta nel database durante SaveChanges() .
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

Query senza tracciamento

  • Nessuna query di tracciamento è utile quando i risultati vengono utilizzati in uno scenario di read-only
  • Sono quicker to execute perché non è necessario configurare le informazioni sul rilevamento delle modifiche

Esempio :

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

Con EF Core 1.0 è anche possibile modificare il comportamento di tracciamento predefinito al livello di context instance del context instance .

Esempio :

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

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

Tracking e proiezioni

  • Anche se il tipo di risultato della query non è un tipo di entità, se il risultato contains entity tipi di contains entity , verranno comunque tracked by default

Esempio :

  • Nella seguente query, che restituisce un anonymous type , will be tracked le istanze di Book nel set di risultati

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Se il set di risultati does not contiene alcun tipo di entity , no tracking viene eseguito no tracking

Esempio :

  • Nella seguente query, che restituisce un anonymous type con alcuni valori dall'entità (ma no instances del tipo di entity reale), non viene eseguito alcun monitoraggio .

    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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow