Buscar..


Observaciones

El comportamiento de seguimiento controla si Entity Framework mantendrá información sobre una instancia de entidad en su rastreador de cambios. Si se realiza un seguimiento de una entidad, todos los cambios detectados en la entidad se conservarán en la base de datos durante SaveChanges() .

Consultas de seguimiento

  • De forma predeterminada, las consultas que devuelven tipos de entidad están siguiendo
  • Esto significa que puede realizar cambios en esas instancias de entidad y que SaveChanges() esos cambios SaveChanges()

Ejemplo:

  • El cambio en la calificación del book se detectará y se conservará en la base de datos durante SaveChanges() .
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

Consultas sin seguimiento

  • Ninguna consulta de seguimiento es útil cuando los resultados se utilizan en un escenario de read-only
  • Son quicker to execute porque no es necesario configurar la información de seguimiento de cambios

Ejemplo:

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

Con EF Core 1.0, también puede cambiar el comportamiento de seguimiento predeterminado en el nivel de context instance .

Ejemplo:

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

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

Seguimiento y proyecciones.

  • Incluso si el tipo de resultado de la consulta no es un tipo de entidad, si el resultado contains entity tipos de contains entity , todavía se tracked by default

Ejemplo:

  • En la siguiente consulta, que devuelve un anonymous type , will be tracked las instancias de Book en el conjunto de resultados

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Si el conjunto de resultados does not contiene ningún tipo de entity , no tracking se realiza no tracking

Ejemplo:

  • En la siguiente consulta, que devuelve un anonymous type con algunos de los valores de la entidad (pero no instances del tipo de entity real), no se realiza ningún seguimiento .

    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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow