Partilhar via


ChangeTracker Classe

Definição

Fornece acesso a informações e operações de controle de alterações para instâncias de entidade que o contexto está acompanhando. As instâncias dessa classe normalmente são obtidas de ChangeTracker e ela não foi projetada para ser construída diretamente no código do aplicativo.

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
Herança
ChangeTracker
Implementações
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Comentários

Consulte Controle de alterações do EF Core para obter mais informações e exemplos.

Construtores

ChangeTracker(DbContext)

Essa API dá suporte à infraestrutura do Entity Framework Core e não se destina a ser usada diretamente do seu código. Essa API pode ser alterada ou removida em versões futuras.

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

Essa é uma API interna que dá suporte à infraestrutura do Entity Framework Core e não está sujeita aos mesmos padrões de compatibilidade que as APIs públicas. Ele pode ser alterado ou removido sem aviso prévio em qualquer versão. Você só deve usá-lo diretamente em seu código com extrema cautela e saber que fazer isso pode resultar em falhas de aplicativo ao atualizar para uma nova versão do Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Essa API dá suporte à infraestrutura do Entity Framework Core e não se destina a ser usada diretamente do seu código. Essa API pode ser alterada ou removida em versões futuras.

Propriedades

AutoDetectChangesEnabled

Obtém ou define um valor que indica se o DetectChanges() método é chamado automaticamente por métodos de DbContext e classes relacionadas.

CascadeDeleteTiming

Obtém ou define um valor que indica quando uma entidade dependente/filho terá seu estado definido Deleted como depois que sua entidade pai/entidade principal tiver sido marcada como Deleted. O valor padrão éImmediate.

Context

Obtém o contexto ao qual esse rastreador de alterações pertence.

DebugView

Expanda essa propriedade no depurador para obter uma exibição legível das entidades que estão sendo rastreadas.

Aviso: não dependa do formato das cadeias de caracteres de depuração. Eles são projetados apenas para depuração e podem mudar arbitrariamente entre as versões.

Consulte Controle de alterações do EF Core para obter mais informações e exemplos.

DeleteOrphansTiming

Obtém ou define um valor que indica quando uma entidade dependente/filho terá seu estado definido Deleted como uma vez cortado de uma entidade pai/principal por meio de uma propriedade de chave estrangeira ou de navegação definida como nula. O valor padrão é Immediate.

LazyLoadingEnabled

Obtém ou define um valor que indica se as propriedades de navegação para entidades controladas serão carregadas no primeiro acesso.

QueryTrackingBehavior

Obtém ou define o comportamento de acompanhamento para consultas LINQ executadas no contexto. Desabilitar o controle de alterações é útil para cenários somente leitura porque evita a sobrecarga de configurar o controle de alterações para cada instância de entidade. Você não deve desabilitar o controle de alterações se quiser manipular instâncias de entidade e persistir essas alterações no banco de dados usando SaveChanges().

Métodos

AcceptAllChanges()

Aceita todas as alterações feitas em entidades no contexto. Supõe-se que as entidades controladas representem o estado atual do banco de dados. Esse método normalmente é chamado por SaveChanges() depois que as alterações foram salvas com êxito no banco de dados.

CascadeChanges()

Força a exclusão imediata em cascata de entidades filho/dependentes quando elas são cortadas de uma entidade pai/entidade principal necessária ou a entidade pai/entidade principal necessária é excluída. Consulte DeleteBehavior.

Clear()

Para de acompanhar todas as entidades atualmente controladas.

DetectChanges()

Examina as instâncias de entidade controladas para detectar as alterações feitas nos dados da instância. DetectChanges() geralmente é chamado automaticamente pelo contexto quando informações atualizadas são necessárias (antes SaveChanges() e ao retornar informações de controle de alterações). Normalmente, você só precisa chamar esse método se tiver desabilitado AutoDetectChangesEnabled.

Consulte Controle de alterações do EF Core para obter mais informações e exemplos.

Entries()

Retorna um EntityEntry para cada entidade que está sendo controlada pelo contexto. As entradas fornecem acesso a informações e operações de controle de alterações para cada entidade.

Entries<TEntity>()

Obtém um EntityEntry para todas as entidades de um determinado tipo que estão sendo controladas pelo contexto. As entradas fornecem acesso a informações e operações de controle de alterações para cada entidade.

HasChanges()

Verifica se entidades novas, excluídas ou alteradas estão sendo controladas de modo que essas alterações serão enviadas ao banco de dados se SaveChanges() ou SaveChangesAsync(CancellationToken) for chamado.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Começa a acompanhar uma entidade e todas as entidades que podem ser acessadas percorrendo suas propriedades de navegação. A passagem é recursiva, portanto, as propriedades de navegação de todas as entidades descobertas também serão verificadas. O especificado callback é chamado para cada entidade descoberta e deve definir o State em que cada entidade deve ser rastreada. Se nenhum estado for definido, a entidade permanecerá sem rastreamento.

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

Começa a acompanhar uma entidade e todas as entidades que podem ser acessadas percorrendo suas propriedades de navegação. A passagem é recursiva, portanto, as propriedades de navegação de todas as entidades descobertas também serão verificadas. O especificado callback é chamado para cada entidade descoberta e deve definir o State em que cada entidade deve ser rastreada. Se nenhum estado for definido, a entidade permanecerá sem rastreamento.

Esse método foi projetado para uso em cenários desconectados em que as entidades são recuperadas usando uma instância do contexto e, em seguida, as alterações são salvas usando uma instância diferente do contexto. Um exemplo disso é um serviço Web em que uma chamada de serviço recupera entidades do banco de dados e outra chamada de serviço persiste quaisquer alterações nas entidades. Cada chamada de serviço usa uma nova instância do contexto que é descartada quando a chamada é concluída.

Normalmente, a passagem do grafo deve parar sempre que uma entidade já rastreada é encontrada ou quando uma entidade é atingida que não deve ser rastreada. Para esse comportamento típico, use a TrackGraph(Object, Action<EntityEntryGraphNode>) sobrecarga. Essa sobrecarga, por outro lado, permite que o retorno de chamada decida quando a passagem terminará, mas o ônus está no chamador para garantir que a passagem não entre em um loop infinito.

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

Começa a acompanhar uma entidade e todas as entidades que podem ser acessadas percorrendo suas propriedades de navegação. A passagem é recursiva, portanto, as propriedades de navegação de todas as entidades descobertas também serão verificadas. O especificado callback é chamado para cada entidade descoberta e deve definir o State em que cada entidade deve ser rastreada. Se nenhum estado for definido, a entidade permanecerá sem rastreamento.

Eventos

DetectedAllChanges

Um evento acionado quando quaisquer alterações foram detectadas no grafo de entidade, seja por meio de uma chamada explícita para DetectChanges()ou automaticamente, como parte da execução SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Um evento acionado quando quaisquer alterações foram detectadas em uma única entidade, seja por meio de uma chamada explícita para DetectChanges() ou DetectChanges()ou automaticamente, como parte da execução SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectingAllChanges

Um evento disparado ao detectar alterações no grafo de entidade prestes a acontecer, seja por meio de uma chamada explícita para DetectChanges()ou automaticamente, como parte da execução SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Um evento acionado ao detectar alterações em uma única entidade está prestes a acontecer, seja por meio de uma chamada explícita para DetectChanges() ou DetectChanges(), ou automaticamente, como parte da execução SaveChanges() ou SaveChangesAsync(CancellationToken).

StateChanged

Um evento acionado quando uma entidade que é rastreada pelo associado DbContext foi movida de uma EntityState para outra.

StateChanging

Um evento acionado quando uma entidade que é rastreada pelo associado DbContext está se movendo de um EntityState para outro.

Tracked

Um evento acionado quando uma entidade é rastreada pelo contexto, seja porque ela foi retornada de uma consulta de acompanhamento ou porque foi anexada ou adicionada ao contexto.

Tracking

Um evento acionado quando uma entidade está prestes a ser rastreada pelo contexto, seja porque ela é retornada de uma consulta de acompanhamento ou porque está sendo anexada ou adicionada ao contexto.

Implantações explícitas de interface

IInfrastructure<IStateManager>.Instance
Obsoleto..

Obtém o gerenciador de estado interno que está sendo usado para armazenar informações sobre entidades controladas.

Essa propriedade destina-se ao uso por métodos de extensão. Ele não se destina a ser usado no código do aplicativo.

IResettableService.ResetState()

Redefine o serviço para que ele possa ser usado no pool.

IResettableService.ResetStateAsync(CancellationToken)

Fornece acesso a informações e operações de controle de alterações para instâncias de entidade que o contexto está acompanhando. As instâncias dessa classe normalmente são obtidas de ChangeTracker e ela não foi projetada para ser construída diretamente no código do aplicativo.

Métodos de Extensão

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Cria uma representação legível por humanos dos metadados determinados.

Aviso: não dependa do formato da cadeia de caracteres retornada. Ele foi projetado apenas para depuração e pode mudar arbitrariamente entre as versões.

GetInfrastructure<T>(IInfrastructure<T>)

Obtém o valor de uma propriedade que está sendo ocultada usando IInfrastructure<T>.

Esse método normalmente é usado por provedores de banco de dados (e outras extensões). Geralmente, ele não é usado no código do aplicativo.

Aplica-se a