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. Он может быть изменен или удален без уведомления в любом выпуске. Его следует использовать только непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложений при обновлении до нового выпуска Entity Framework Core. |
ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext) |
Этот API поддерживает инфраструктуру Entity Framework Core и не предназначен для использования непосредственно из кода. В будущих выпусках этот API может быть изменен или удален. |
Свойства
AutoDetectChangesEnabled |
Возвращает или задает значение, указывающее, вызывается ли DetectChanges() метод автоматически методами DbContext и связанных классов. |
CascadeDeleteTiming |
Возвращает или задает значение, указывающее, когда зависимая или дочерняя сущность будет иметь состояние , Deleted как только ее родительская или основная сущность будет помечена как Deleted. Значение по умолчанию —Immediate . |
Context |
Возвращает контекст, к которому относится средство отслеживания изменений. |
DebugView |
Разверните это свойство в отладчике для удобочитаемого представления отслеживаемых сущностей. Предупреждение. Не полагайтесь на формат строк отладки. Они предназначены только для отладки и могут изменяться произвольно между выпусками. Дополнительные сведения и примеры см. в статье Отслеживание изменений EF Core . |
DeleteOrphansTiming |
Возвращает или задает значение, указывающее, когда для зависимой или дочерней сущности будет задано Deleted состояние , равное после того, как она будет удалена из родительской или основной сущности с помощью свойства навигации или внешнего ключа, для которых задано значение NULL. Значение по умолчанию — Immediate. |
LazyLoadingEnabled |
Возвращает или задает значение, указывающее, будут ли свойства навигации для отслеживаемых сущностей загружаться при первом доступе. |
QueryTrackingBehavior |
Возвращает или задает поведение отслеживания для запросов LINQ, выполняемых в контексте. Отключение отслеживания изменений полезно для сценариев только для чтения, так как позволяет избежать дополнительных затрат на настройку отслеживания изменений для каждого экземпляра сущности. Не следует отключать отслеживание изменений, если вы хотите управлять экземплярами сущностей и сохранять эти изменения в базе данных с помощью SaveChanges(). |
Методы
AcceptAllChanges() |
Принимает все изменения, внесенные в сущности в контексте. Предполагается, что отслеживаемые сущности представляют текущее состояние базы данных. Этот метод обычно вызывается SaveChanges() после успешного сохранения изменений в базе данных. |
CascadeChanges() |
Принудительное немедленное каскадное удаление дочерних или зависимых сущностей, если они либо отрезаны от требуемой родительской или основной сущности, либо если требуется сама необходимая родительская или основная сущность удаляется. См. раздел DeleteBehavior. |
Clear() |
Прекращает отслеживание всех отслеживаемых в настоящее время сущностей. |
DetectChanges() |
Сканирует отслеживаемые экземпляры сущностей для обнаружения изменений, внесенных в данные экземпляра. DetectChanges() Обычно вызывается автоматически контекстом, когда требуются актуальные сведения (до SaveChanges() и при возврате сведений об отслеживании изменений). Обычно этот метод требуется вызывать только в том случае, если вы отключили AutoDetectChangesEnabled. Дополнительные сведения и примеры см. в статье Отслеживание изменений EF Core . |
Entries() |
Возвращает для каждой EntityEntry сущности, отслеживаемой контекстом. Записи предоставляют доступ к сведениям и операциям отслеживания изменений для каждой сущности. |
Entries<TEntity>() |
EntityEntry Возвращает объект для всех сущностей заданного типа, отслеживаемых контекстом. Записи предоставляют доступ к сведениям и операциям отслеживания изменений для каждой сущности. |
HasChanges() |
Проверяет, отслеживаются ли новые, удаленные или измененные сущности, чтобы эти изменения отправлялись в базу данных при SaveChanges() вызове или SaveChangesAsync(CancellationToken) . |
TrackGraph(Object, Action<EntityEntryGraphNode>) |
Начинает отслеживание сущности и всех доступных сущностей путем обхода ее свойств навигации.
Обход является рекурсивным, поэтому свойства навигации всех обнаруженных сущностей также будут проверяться.
Указанный |
TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>) |
Начинает отслеживание сущности и всех сущностей, доступных путем обхода ее свойств навигации.
Обход является рекурсивным, поэтому свойства навигации всех обнаруженных сущностей также будут проверяться.
Указанный Этот метод предназначен для использования в сценариях с отключением, где сущности извлекаются с помощью одного экземпляра контекста, а затем изменения сохраняются с помощью другого экземпляра контекста. Примером этого является веб-служба, в которой один вызов службы получает сущности из базы данных, а другой вызов службы сохраняет любые изменения сущностей. Каждый вызов службы использует новый экземпляр контекста, который удаляется после завершения вызова. Обычно обход графа должен останавливаться при каждом обнаружении уже отслеживаемой сущности или при достижении сущности, которую не следует отслеживать. Для этого типичного поведения используйте перегрузку TrackGraph(Object, Action<EntityEntryGraphNode>) . Эта перегрузка, с другой стороны, позволяет обратному вызову решить, когда завершится обход, но затем на вызывающую сторону будет ставиться нагрузка, чтобы гарантировать, что обход не перейдет в бесконечный цикл. |
TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode<TState>,Boolean>) |
Начинает отслеживание сущности и всех доступных сущностей путем обхода ее свойств навигации.
Обход является рекурсивным, поэтому свойства навигации всех обнаруженных сущностей также будут проверяться.
Указанный |
События
DetectedAllChanges |
Событие, возникающее при обнаружении каких-либо изменений в графе сущностей, путем явного вызова DetectChanges()или автоматически, например при выполнении SaveChanges() или SaveChangesAsync(CancellationToken). |
DetectedEntityChanges |
Событие, возникающее при обнаружении каких-либо изменений в отдельной сущности, путем явного вызова DetectChanges() или DetectChanges()или автоматически, например при выполнении SaveChanges() или SaveChangesAsync(CancellationToken). |
DetectingAllChanges |
Событие, возникающее при обнаружении изменений в графе сущностей, которые должны произойти, либо через явный вызов DetectChanges(), либо автоматически, например при выполнении SaveChanges() или SaveChangesAsync(CancellationToken). |
DetectingEntityChanges |
Событие, возникающее при обнаружении изменений в одной сущности, должно произойти либо через явный вызов DetectChanges() или DetectChanges(), либо автоматически, например при выполнении SaveChanges() или SaveChangesAsync(CancellationToken). |
StateChanged |
Событие, возникающее при перемещении EntityState сущности, отслеживаемой связанным DbContext объектом. |
StateChanging |
Событие, возникающее при перемещении EntityState сущности, отслеживаемой связанным DbContext объектом. |
Tracked |
Событие, возникающее при отслеживании сущности контекстом, либо потому, что она была возвращена из запроса отслеживания, либо потому, что она была присоединена или добавлена в контекст. |
Tracking |
Событие, возникающее, когда сущность вот-вот будет отслеживаться контекстом, либо потому, что она возвращается из запроса отслеживания, либо потому, что она присоединяется или добавляется в контекст. |
Явные реализации интерфейса
IInfrastructure<IStateManager>.Instance |
Является устаревшей..
Возвращает внутренний диспетчер состояний, используемый для хранения сведений о отслеживаемых сущностях. Это свойство предназначено для использования методами расширения. Он не предназначен для использования в коде приложения. |
IResettableService.ResetState() |
Сбрасывает службу, чтобы ее можно было использовать из пула. |
IResettableService.ResetStateAsync(CancellationToken) |
Предоставляет доступ к сведениям об отслеживании изменений и операциям для экземпляров сущностей, отслеживаемых контекстом. Экземпляры этого класса обычно получаются из ChangeTracker и не предназначены для непосредственного создания в коде приложения. |
Методы расширения
ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32) |
Создает удобочитаемое представление заданных метаданных. Предупреждение. Не полагайтесь на формат возвращаемой строки. Он предназначен только для отладки и может изменяться произвольно между выпусками. |
GetInfrastructure<T>(IInfrastructure<T>) |
Получает значение из свойства, скрытого с помощью IInfrastructure<T>. Этот метод обычно используется поставщиками баз данных (и другими расширениями). Обычно он не используется в коде приложения. |
Применяется к
Entity Framework