Поиск…


замечания

Отслеживание поведения контролирует, будет ли Entity Framework хранить информацию об экземпляре сущности в своем трекере изменения. Если объект отслеживается, любые изменения, обнаруженные в объекте, будут сохраняться в базе данных во время SaveChanges() .

Отслеживание запросов

  • По умолчанию запросы, возвращающие типы объектов, отслеживаются
  • Это означает, что вы можете вносить изменения в эти экземпляры сущности и сохранять эти изменения в SaveChanges()

Пример :

  • Изменения в рейтинге book будут обнаружены и сохранены в базе данных во время SaveChanges() .
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

Запросы без отслеживания

  • Запросы на отслеживание не полезны, когда результаты используются в сценарии read-only для read-only
  • Они quicker to execute потому что нет необходимости настраивать информацию отслеживания изменений

Пример :

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

С EF Core 1.0 вы также можете изменить поведение отслеживания по умолчанию на уровне context instance .

Пример :

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

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

Отслеживание и прогнозы

  • Даже если тип результата запроса не является типом сущности, если результат contains entity типы contains entity они по-прежнему будут tracked by default

Пример :

  • В следующем запросе, который возвращает anonymous type , will be tracked экземпляры Book в результирующем наборе

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • Если результат does not содержит каких - либо entity типа, то no tracking не выполняется

Пример :

  • В следующем запросе, который возвращает anonymous type с некоторыми значениями из объекта (но no instances фактического типа entity ), отслеживание не выполняется.

    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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow