다음을 통해 공유


ChangeTracker 클래스

정의

컨텍스트가 추적하는 엔터티 인스턴스에 대한 변경 내용 추적 정보 및 작업에 대한 액세스를 제공합니다. 이 클래스의 인스턴스는 일반적으로 에서 ChangeTracker 가져오며 애플리케이션 코드에서 직접 생성되도록 설계되지 않았습니다.

public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
    interface IResettableService
type ChangeTracker = class
    interface IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager)
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager), IResettableService
Public Class ChangeTracker
Implements IResettableService
상속
ChangeTracker
구현
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

설명

자세한 내용 및 예제 는 EF Core 변경 내용 추적 을 참조하세요.

생성자

ChangeTracker(DbContext)

이 API는 Entity Framework Core 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 이 API는 이후 릴리스에서 변경되거나 제거될 수 있습니다.

ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator)

이 API는 Entity Framework Core 인프라를 지원하고 공용 API와 동일한 호환성 표준이 적용되지 않는 내부 API입니다. 릴리스에서 예고 없이 변경되거나 제거될 수 있습니다. 코드에서 직접 사용해야 하며, 이렇게 하면 새 Entity Framework Core 릴리스로 업데이트할 때 애플리케이션 오류가 발생할 수 있다는 것을 알고 있어야 합니다.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

이 API는 Entity Framework Core 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 이 API는 이후 릴리스에서 변경되거나 제거될 수 있습니다.

속성

AutoDetectChangesEnabled

및 관련 클래스의 메서드 DbContext 에 의해 메서드가 DetectChanges() 자동으로 호출되는지 여부를 나타내는 값을 가져오거나 설정합니다.

CascadeDeleteTiming

부모/주체 엔터티가 로 표시된 Deleted후 종속/자식 엔터티의 상태가 로 Deleted 설정된 시기를 나타내는 값을 가져오거나 설정합니다. 기본값은 입니다Immediate.

Context

이 변경 추적기가 속한 컨텍스트를 가져옵니다.

DebugView

추적 중인 엔터티의 사람이 읽을 수 있는 보기를 보려면 디버거에서 이 속성을 확장합니다.

경고: 디버그 문자열의 형식을 사용하지 마세요. 디버깅 전용으로 설계되었으며 릴리스 간에 임의로 변경될 수 있습니다.

자세한 내용 및 예제 는 EF Core 변경 내용 추적 을 참조하세요.

DeleteOrphansTiming

null로 설정되는 탐색 또는 외래 키 속성을 통해 종속/자식 엔터티의 상태가 부모/주체 엔터티에서 분리된 후 로 설정된 Deleted 경우를 나타내는 값을 가져오거나 설정합니다. 기본값은 Immediate입니다.

LazyLoadingEnabled

추적된 엔터티의 탐색 속성이 첫 번째 액세스에서 로드될지 여부를 나타내는 값을 가져오거나 설정합니다.

QueryTrackingBehavior

컨텍스트에 대해 실행되는 LINQ 쿼리에 대한 추적 동작을 가져오거나 설정합니다. 변경 내용 추적을 사용하지 않도록 설정하면 각 엔터티 instance 대한 변경 내용 추적 설정 오버헤드를 방지하므로 읽기 전용 시나리오에 유용합니다. 엔터티 인스턴스를 조작하고 를 사용하여 SaveChanges()데이터베이스에 이러한 변경 내용을 유지하려는 경우 변경 내용 추적을 사용하지 않도록 설정하면 안 됩니다.

메서드

AcceptAllChanges()

컨텍스트에서 엔터티에 대한 모든 변경 내용을 허용합니다. 추적된 엔터티가 데이터베이스의 현재 상태를 나타낸 것으로 가정합니다. 이 메서드는 일반적으로 변경 내용을 데이터베이스에 성공적으로 저장한 후에 에 의해 SaveChanges() 호출됩니다.

CascadeChanges()

자식/종속 엔터티가 필수 부모/주체 엔터티에서 분리되거나 필요한 부모/주체 엔터티 자체가 삭제되면 자식/종속 엔터티를 즉시 삭제합니다. DeleteBehavior을 참조하세요.

Clear()

현재 추적된 모든 엔터티 추적을 중지합니다.

DetectChanges()

추적된 엔터티 인스턴스를 검사하여 instance 데이터에 대한 변경 내용을 검색합니다. DetectChanges() 는 일반적으로 최신 정보가 필요한 경우 컨텍스트에 의해 자동으로 호출됩니다(변경 내용 추적 정보를 반환하기 전 SaveChanges() 과 반환할 때). 일반적으로 를 사용하지 않도록 설정한 AutoDetectChangesEnabled경우에만 이 메서드를 호출해야 합니다.

자세한 내용 및 예제 는 EF Core 변경 내용 추적 을 참조하세요.

Entries()

컨텍스트에서 EntityEntry 추적하는 각 엔터티에 대한 를 반환합니다. 항목은 각 엔터티에 대한 변경 내용 추적 정보 및 작업에 대한 액세스를 제공합니다.

Entries<TEntity>()

컨텍스트에서 EntityEntry 추적되는 지정된 형식의 모든 엔터티에 대한 을 가져옵니다. 항목은 각 엔터티에 대한 변경 내용 추적 정보 및 작업에 대한 액세스를 제공합니다.

HasChanges()

또는 SaveChangesAsync(CancellationToken) 이 호출되는 경우 SaveChanges() 이러한 변경 내용이 데이터베이스로 전송되도록 새 엔터티, 삭제 또는 변경된 엔터티가 추적되고 있는지 확인합니다.

TrackGraph(Object, Action<EntityEntryGraphNode>)

탐색 속성을 트래버스하여 연결할 수 있는 엔터티 및 엔터티 추적을 시작합니다. 순회는 재귀적이므로 검색된 엔터티의 탐색 속성도 검사됩니다. 지정된 는 검색된 callback 각 엔터티에 대해 호출되며 각 엔터티를 State 추적해야 하는 를 설정해야 합니다. 상태가 설정되지 않은 경우 엔터티는 추적되지 않은 상태로 유지됩니다.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>)

탐색 속성을 트래버스하여 연결할 수 있는 엔터티 및 엔터티 추적을 시작합니다. 순회는 재귀적이므로 검색된 엔터티의 탐색 속성도 검사됩니다. 지정된 는 검색된 callback 각 엔터티에 대해 호출되며 각 엔터티를 State 추적해야 하는 를 설정해야 합니다. 상태가 설정되지 않은 경우 엔터티는 추적되지 않은 상태로 유지됩니다.

이 메서드는 컨텍스트의 한 instance 사용하여 엔터티를 검색한 다음 컨텍스트의 다른 instance 사용하여 변경 내용을 저장하는 연결이 끊긴 시나리오에서 사용하도록 설계되었습니다. 예를 들어 한 서비스 호출이 데이터베이스에서 엔터티를 검색하고 다른 서비스 호출이 엔터티에 대한 변경 내용을 유지하는 웹 서비스입니다. 각 서비스 호출은 호출이 완료될 때 삭제되는 컨텍스트의 새 instance 사용합니다.

일반적으로 그래프의 통과는 이미 추적된 엔터티가 발견되거나 추적해서는 안 되는 엔터티에 도달할 때마다 중지되어야 합니다. 이 일반적인 동작의 경우 오버로드를 TrackGraph(Object, Action<EntityEntryGraphNode>) 사용합니다. 반면에 이 오버로드는 콜백이 트래버스가 종료되는 시기를 결정할 수 있지만, 통과가 무한 루프로 들어가지 않도록 호출자에 onus가 있습니다.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode<TState>,Boolean>)

탐색 속성을 트래버스하여 연결할 수 있는 엔터티 및 엔터티 추적을 시작합니다. 순회는 재귀적이므로 검색된 엔터티의 탐색 속성도 검사됩니다. 지정된 는 검색된 callback 각 엔터티에 대해 호출되며 각 엔터티를 State 추적해야 하는 를 설정해야 합니다. 상태가 설정되지 않은 경우 엔터티는 추적되지 않은 상태로 유지됩니다.

이벤트

DetectedAllChanges

에 대한 명시적 호출 DetectChanges()을 통해 엔터티 그래프에 대한 변경 내용이 감지되거나 또는 실행 SaveChanges()SaveChangesAsync(CancellationToken)의 일부와 같이 자동으로 발생하는 이벤트입니다.

DetectedEntityChanges

또는 에 대한 명시적 호출 DetectChanges() 을 통해 단일 엔터티에 대한 변경 내용이 감지되거나 또는 DetectChanges()실행 SaveChanges()SaveChangesAsync(CancellationToken)의 일부와 같이 자동으로 발생하는 이벤트입니다.

DetectingAllChanges

에 대한 명시적 호출을 통해 또는 또는 실행 SaveChanges()SaveChangesAsync(CancellationToken)의 일부와 같이 자동으로 발생할 엔터티 그래프의 변경 내용을 검색할 DetectChanges()때 발생하는 이벤트입니다.

DetectingEntityChanges

또는 에 대한 명시적 호출 DetectChanges() 을 통해 단일 엔터티에 대한 변경 내용을 검색할 때 발생하거나 또는 DetectChanges()실행 SaveChanges()SaveChangesAsync(CancellationToken)의 일부와 같이 자동으로 발생하는 이벤트입니다.

StateChanged

연결된 DbContext 에 의해 추적되는 엔터티가 한 EntityState 엔터티에서 다른 엔터티로 이동했을 때 발생하는 이벤트입니다.

StateChanging

연결된 DbContext 에 의해 추적되는 엔터티가 서로 EntityState 이동할 때 발생하는 이벤트입니다.

Tracked

엔터티가 추적 쿼리에서 반환되었거나 컨텍스트에 연결되거나 추가되었기 때문에 컨텍스트에서 엔터티를 추적할 때 발생하는 이벤트입니다.

Tracking

엔터티가 추적 쿼리에서 반환되거나 컨텍스트에 연결되거나 추가되기 때문에 컨텍스트에서 엔터티를 추적하려고 할 때 발생하는 이벤트입니다.

명시적 인터페이스 구현

IInfrastructure<IStateManager>.Instance
사용되지 않습니다..

추적된 엔터티에 대한 정보를 저장하는 데 사용되는 내부 상태 관리자를 가져옵니다.

이 속성은 확장 메서드에서 사용하기 위한 것입니다. 애플리케이션 코드에서 사용할 수 없습니다.

IResettableService.ResetState()

풀에서 사용할 수 있도록 서비스를 다시 설정합니다.

IResettableService.ResetStateAsync(CancellationToken)

컨텍스트가 추적하는 엔터티 인스턴스에 대한 변경 내용 추적 정보 및 작업에 대한 액세스를 제공합니다. 이 클래스의 인스턴스는 일반적으로 에서 ChangeTracker 가져오며 애플리케이션 코드에서 직접 생성되도록 설계되지 않았습니다.

확장 메서드

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

지정된 메타데이터의 사람이 읽을 수 있는 표현을 만듭니다.

경고: 반환된 문자열의 형식을 사용하지 마세요. 디버깅 전용으로 설계되었으며 릴리스 간에 임의로 변경될 수 있습니다.

GetInfrastructure<T>(IInfrastructure<T>)

을 사용하여 IInfrastructure<T>숨겨지는 속성에서 값을 가져옵니다.

이 메서드는 일반적으로 데이터베이스 공급자(및 기타 확장)에서 사용됩니다. 일반적으로 애플리케이션 코드에는 사용되지 않습니다.

적용 대상