Entity Framework
추적 대 추적 없음
수색…
비고
추적 동작은 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 execute
이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
계속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