답변:
기존 객체를 분리하려면 @Slauma의 조언을 따르십시오. 변경 사항을 추적하지 않고 객체를로드하려면 다음을 사용하십시오.
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
주석에서 언급했듯이 이것은 엔티티를 완전히 분리하지는 않습니다. 그것들은 여전히 첨부되어 있고 게으른 로딩 작업이지만 엔티티는 추적되지 않습니다. 예를 들어 엔터티를로드하여 데이터를 읽기만하고 수정할 계획이없는 경우에 사용해야합니다.
이것은 옵션입니다 :
dbContext.Entry(entity).State = EntityState.Detached;
entity
모델 클래스 (개인, 고객, 주문 등)의 일부인 유형의 구체화 된 객체 여야합니다. IQueryable <T>에 직접 전달할 수 없습니다 dbContext.Entry(...)
. 그게 당신이 의미 한 질문입니까?
Detached
. 컨텍스트에 전혀 첨부하지 않고 DB에서 엔티티를로드하려면 (변경 내용 추적 없음)을 사용하십시오 AsNoTracking
.
Detached
.
using(ctx){ return ctx....ToList(); }
. 이러한 경우AsNoTracking()
불필요하게 객체 컨텍스트를 채우는 것을 저장하기 때문에 사용하는 것이 의미가 있습니다. 큰 목록의 경우 성능 및 메모리 소비 이점이있을 것입니다.