수색…


비고

추적 동작은 Entity Framework가 변경 추적기의 엔터티 인스턴스에 대한 정보를 유지할지 여부를 제어합니다. 엔터티가 추적되면 엔터티에서 감지 된 변경 사항은 SaveChanges() 동안 데이터베이스에 유지됩니다.

추적 쿼리

  • 기본적으로 엔티티 유형을 반환하는 쿼리는 추적 중입니다.
  • 즉, 해당 엔티티 인스턴스를 변경하고 해당 변경 사항을 SaveChanges() 유지할 수 있음을 의미합니다.

예 :

  • SaveChanges() 동안 book 등급에 대한 변경 사항이 감지되어 데이터베이스에 유지됩니다.
  using (var context = new BookContext())
  {
    var book = context.Books.FirstOrDefault(b => b.BookId == 1);
    book.Rating = 5;
    context.SaveChanges();
  }

추적 추적 없음

  • 결과가 read-only 시나리오에서 사용되는 경우 추적 조회가 유용하지 않습니다.
  • 변경 추적 정보를 설정할 필요가 없으므로 quicker to executequicker 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 계속 tracked by default

예 :

  • anonymous type 을 반환하는 다음 쿼리에서 결과 집합의 Book 인스턴스 will be tracked

     using (var context = new BookContext())
     {
        var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() });
     }
    
  • 결과 세트에 entity 유형이 포함되어 does not no tracking 이 수행 no tracking

예 :

  • 다음 쿼리에서는 엔터티의 값 중 일부가 포함 된 anonymous type 을 반환하지만 (실제 entity 형식의 no instances없음) 추적이 수행 되지 않습니다 .

    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