Compartir a través de


ChangeTracker Clase

Definición

Proporciona acceso a la información y las operaciones de seguimiento de cambios para las instancias de entidad que realiza el seguimiento del contexto. Las instancias de esta clase se obtienen normalmente de ChangeTracker y no están diseñadas para construirse directamente en el código de la aplicación.

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
Herencia
ChangeTracker
Implementaciones
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Comentarios

Consulte Seguimiento de cambios de EF Core para obtener más información y ejemplos.

Constructores

ChangeTracker(DbContext)

Esta API admite la infraestructura de Entity Framework Core y no está pensada para usarse directamente desde el código. Esta API puede cambiar o quitarse en versiones futuras.

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

Se trata de una API interna que admite la infraestructura de Entity Framework Core y no está sujeta a los mismos estándares de compatibilidad que las API públicas. Se puede cambiar o quitar sin previo aviso en ninguna versión. Solo debe usarlo directamente en el código con extrema precaución y saber que hacerlo puede dar lugar a errores de aplicación al actualizar a una nueva versión de Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Esta API admite la infraestructura de Entity Framework Core y no está pensada para usarse directamente desde el código. Esta API puede cambiar o quitarse en versiones futuras.

Propiedades

AutoDetectChangesEnabled

Obtiene o establece un valor que indica si los métodos de DbContext y las clases relacionadas llaman automáticamente al DetectChanges() método .

CascadeDeleteTiming

Obtiene o establece un valor que indica cuándo una entidad dependiente o secundaria tendrá su estado establecido Deleted en una vez que su entidad principal o principal se ha marcado como Deleted. El valor predeterminado esImmediate .

Context

Obtiene el contexto al que pertenece este rastreador de cambios.

DebugView

Expanda esta propiedad en el depurador para obtener una vista legible de las entidades a las que se realiza el seguimiento.

Advertencia: no se base en el formato de las cadenas de depuración. Están diseñados solo para depurar y pueden cambiar arbitrariamente entre versiones.

Consulte Seguimiento de cambios de EF Core para obtener más información y ejemplos.

DeleteOrphansTiming

Obtiene o establece un valor que indica cuándo una entidad dependiente o secundaria tendrá su estado establecido Deleted en una vez separado de una entidad principal o principal a través de una propiedad de clave externa o de navegación establecida en NULL. El valor predeterminado es Immediate.

LazyLoadingEnabled

Obtiene o establece un valor que indica si las propiedades de navegación de las entidades con seguimiento se cargarán en el primer acceso.

QueryTrackingBehavior

Obtiene o establece el comportamiento de seguimiento de las consultas LINQ que se ejecutan en el contexto. Deshabilitar el seguimiento de cambios es útil para escenarios de solo lectura, ya que evita la sobrecarga de configurar el seguimiento de cambios para cada instancia de entidad. No debe deshabilitar el seguimiento de cambios si desea manipular instancias de entidad y conservar esos cambios en la base de datos mediante SaveChanges().

Métodos

AcceptAllChanges()

Acepta todos los cambios realizados en las entidades en el contexto. Se supone que las entidades con seguimiento representan el estado actual de la base de datos. Normalmente, se llama a SaveChanges() este método después de que los cambios se hayan guardado correctamente en la base de datos.

CascadeChanges()

Fuerza la eliminación inmediata en cascada de entidades secundarias o dependientes cuando se separan de una entidad principal o principal necesaria, o se elimina la entidad principal o principal necesaria. Vea DeleteBehavior.

Clear()

Detiene el seguimiento de todas las entidades con seguimiento actualmente.

DetectChanges()

Examina las instancias de entidad con seguimiento para detectar los cambios realizados en los datos de instancia. DetectChanges() Normalmente, el contexto llama automáticamente cuando se requiere información actualizada (antes SaveChanges() y al devolver información de seguimiento de cambios). Normalmente, solo es necesario llamar a este método si ha deshabilitado AutoDetectChangesEnabled.

Consulte Seguimiento de cambios de EF Core para obtener más información y ejemplos.

Entries()

Devuelve un EntityEntry para cada entidad a la que realiza el seguimiento el contexto. Las entradas proporcionan acceso a la información y las operaciones de seguimiento de cambios para cada entidad.

Entries<TEntity>()

Obtiene un EntityEntry para todas las entidades de un tipo determinado al que realiza el seguimiento el contexto. Las entradas proporcionan acceso a la información y las operaciones de seguimiento de cambios para cada entidad.

HasChanges()

Comprueba si se realiza un seguimiento de las entidades nuevas, eliminadas o modificadas, de modo que estos cambios se enviarán a la base de datos si SaveChanges() se llama a o SaveChangesAsync(CancellationToken) .

TrackGraph(Object, Action<EntityEntryGraphNode>)

Comienza a realizar el seguimiento de una entidad y a las entidades a las que se puede acceder mediante el recorrido de sus propiedades de navegación. Traversal es recursivo, por lo que también se analizarán las propiedades de navegación de las entidades detectadas. Se llama al especificado callback para cada entidad detectada y debe establecer el objeto en el State que se debe realizar el seguimiento de cada entidad. Si no se establece ningún estado, la entidad permanece sin seguimiento.

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

Comienza a realizar el seguimiento de una entidad y a las entidades a las que se puede acceder mediante el recorrido de las propiedades de navegación. Traversal es recursivo, por lo que también se analizarán las propiedades de navegación de las entidades detectadas. Se llama al especificado callback para cada entidad detectada y debe establecer el objeto en el State que se debe realizar el seguimiento de cada entidad. Si no se establece ningún estado, la entidad permanece sin seguimiento.

Este método está diseñado para su uso en escenarios desconectados en los que las entidades se recuperan mediante una instancia del contexto y, a continuación, los cambios se guardan mediante una instancia diferente del contexto. Un ejemplo de esto es un servicio web donde una llamada de servicio recupera entidades de la base de datos y otra llamada de servicio conserva los cambios en las entidades. Cada llamada de servicio usa una nueva instancia del contexto que se elimina cuando se completa la llamada.

Normalmente, el recorrido del grafo debe detenerse siempre que se encuentre una entidad ya rastreada o cuando se alcance una entidad que no se debe realizar el seguimiento. Para este comportamiento típico, use la TrackGraph(Object, Action<EntityEntryGraphNode>) sobrecarga. Esta sobrecarga, por otro lado, permite que la devolución de llamada decida cuándo finalizará el recorrido, pero la responsabilidad es entonces en el autor de la llamada para asegurarse de que el recorrido no entrará en un bucle infinito.

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

Comienza a realizar el seguimiento de una entidad y a las entidades a las que se puede acceder mediante el recorrido de sus propiedades de navegación. Traversal es recursivo, por lo que también se analizarán las propiedades de navegación de las entidades detectadas. Se llama al especificado callback para cada entidad detectada y debe establecer el objeto en el State que se debe realizar el seguimiento de cada entidad. Si no se establece ningún estado, la entidad permanece sin seguimiento.

Eventos

DetectedAllChanges

Evento desencadenado cuando se han detectado cambios en el grafo de entidades, ya sea a través de una llamada explícita a DetectChanges()o automáticamente, como parte de la SaveChanges() ejecución o SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Evento desencadenado cuando se han detectado cambios en una sola entidad, ya sea a través de una llamada explícita a DetectChanges() o DetectChanges(), o automáticamente, como parte de la SaveChanges() ejecución o SaveChangesAsync(CancellationToken).

DetectingAllChanges

Se desencadena un evento al detectar cambios en el grafo de entidades a punto de producirse, ya sea a través de una llamada explícita a DetectChanges()o automáticamente, como parte de la SaveChanges() ejecución o SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Se desencadena un evento al detectar cambios en una sola entidad, ya sea a través de una llamada explícita a DetectChanges() o DetectChanges(), o automáticamente, como parte de la SaveChanges() ejecución o SaveChangesAsync(CancellationToken).

StateChanged

Evento desencadenado cuando una entidad a la que realiza el seguimiento el asociado DbContext se ha movido de una EntityState a otra.

StateChanging

Evento desencadenado cuando una entidad a la que realiza un seguimiento el asociado DbContext se mueve de una EntityState a otra.

Tracked

Evento desencadenado cuando el contexto realiza un seguimiento de una entidad, ya sea porque se devolvió desde una consulta de seguimiento o porque se adjuntó o agregó al contexto.

Tracking

Evento desencadenado cuando el contexto realiza un seguimiento de una entidad, ya sea porque se devuelve desde una consulta de seguimiento, o porque se adjunta o se agrega al contexto.

Implementaciones de interfaz explícitas

IInfrastructure<IStateManager>.Instance
Obsoleto..

Obtiene el administrador de estado interno que se usa para almacenar información sobre las entidades con seguimiento.

Esta propiedad está pensada para su uso por métodos de extensión. No está pensado para usarse en el código de aplicación.

IResettableService.ResetState()

Restablece el servicio para que se pueda usar desde el grupo.

IResettableService.ResetStateAsync(CancellationToken)

Proporciona acceso a la información y las operaciones de seguimiento de cambios para las instancias de entidad que realiza el seguimiento del contexto. Las instancias de esta clase se obtienen normalmente de ChangeTracker y no están diseñadas para construirse directamente en el código de la aplicación.

Métodos de extensión

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Crea una representación legible de los metadatos especificados.

Advertencia: No confíe en el formato de la cadena devuelta. Está diseñado solo para depurar y puede cambiar arbitrariamente entre versiones.

GetInfrastructure<T>(IInfrastructure<T>)

Obtiene el valor de una propiedad que se oculta mediante IInfrastructure<T>.

Normalmente, los proveedores de bases de datos usan este método (y otras extensiones). Por lo general, no se usa en el código de aplicación.

Se aplica a