ChangeTracker 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对上下文所跟踪的实体实例的更改跟踪信息和操作的访问权限。 此类的实例通常是从中 ChangeTracker 获取的,它不设计为直接在应用程序代码中构造。
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>
[System.Runtime.CompilerServices.Nullable(0)]
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
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>
[<System.Runtime.CompilerServices.Nullable(0)>]
type ChangeTracker = class
interface IResettableService
type ChangeTracker = class
interface IInfrastructure<IStateManager>
interface IResettableService
type ChangeTracker = class
interface IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager)
Public Class ChangeTracker
Implements IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager), IResettableService
- 继承
-
ChangeTracker
- 特性
- 实现
-
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService
注解
有关详细信息和示例,请参阅 EF Core 更改跟踪 。
构造函数
| 名称 | 说明 |
|---|---|
| ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator) |
这是一个内部 API,支持Entity Framework Core基础结构,不受与公共 API 相同的兼容性标准的约束。 可以在任何版本中更改或删除它,而不通知。 只需在代码中直接使用它,并非常谨慎地知道这样做可能会导致应用程序在更新到新的Entity Framework Core版本时失败。 |
| ChangeTracker(DbContext) |
此 API 支持Entity Framework Core基础结构,不打算直接从代码使用。 此 API 可能会在将来的版本中更改或删除。 |
| ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext) |
此 API 支持Entity Framework Core基础结构,不打算直接从代码使用。 此 API 可能会在将来的版本中更改或删除。 |
属性
| 名称 | 说明 |
|---|---|
| AutoDetectChangesEnabled |
获取或设置一个值,该值指示方法是否 DetectChanges() 由方法 DbContext 和相关类自动调用。 |
| CascadeDeleteTiming |
获取或设置一个值,该值指示在父/主体实体被标记为Deleted后,依赖/子实体的状态设置为Deleted何时。 默认值为 |
| Context |
获取此更改跟踪器所属的上下文。 |
| DebugView |
在调试器中展开此属性,以获取要跟踪的实体的可读视图。 警告:不依赖于调试字符串的格式。 它们仅用于调试,可以在发布之间任意更改。 有关详细信息和示例,请参阅 EF Core 更改跟踪 。 |
| DeleteOrphansTiming |
获取或设置一个值,该值指示依赖/子实体何时通过 Deleted 导航或外键属性设置为 null 从父/主体实体切断状态。 默认值为 Immediate。 |
| LazyLoadingEnabled |
获取或设置一个值,该值指示是否在首次访问时加载跟踪实体的导航属性。 |
| QueryTrackingBehavior |
获取或设置针对上下文运行的 LINQ 查询的跟踪行为。 禁用更改跟踪对于只读方案很有用,因为它避免了为每个实体实例设置更改跟踪的开销。 如果要操作实体实例并将这些更改保存到数据库, SaveChanges()则不应禁用更改跟踪。 |
方法
| 名称 | 说明 |
|---|---|
| AcceptAllChanges() |
接受对上下文中实体所做的所有更改。 假定跟踪的实体表示数据库的当前状态。 通常, SaveChanges() 在成功将更改保存到数据库后调用此方法。 |
| CascadeChanges() |
从所需的父/主体实体中切断子/依赖实体时,强制立即删除子实体/从属实体,或者删除所需的父/主体实体。 请参阅 DeleteBehavior。 |
| Clear() |
停止跟踪所有当前跟踪的实体。 |
| DetectChanges() |
扫描跟踪的实体实例以检测对实例数据所做的任何更改。 DetectChanges() 通常在需要 up-to日期信息时(在返回更改跟踪信息之前和返回更改跟踪信息之前 SaveChanges() 和返回时)由上下文自动调用。 如果禁用 AutoDetectChangesEnabled了此方法,通常只需调用此方法。 |
| Entries() |
返回上下文所跟踪的每个实体的一个 EntityEntry 。 这些条目提供对每个实体的更改跟踪信息和操作的访问权限。 |
| Entries<TEntity>() |
获取上下文所跟踪的给定类型的所有实体的一个 EntityEntry 。 这些条目提供对每个实体的更改跟踪信息和操作的访问权限。 |
| GetEntriesForState(Boolean, Boolean, Boolean, Boolean) |
获取由具有给定状态的上下文跟踪的每个实体的一个 EntityEntry 。 这些条目提供对每个实体的更改跟踪信息和操作的访问权限。 |
| GetEntriesForState<TEntity>(Boolean, Boolean, Boolean, Boolean) |
获取由具有给定状态的上下文跟踪的给定类型的每个实体的一个 EntityEntry<TEntity> 实体。 这些条目提供对每个实体的更改跟踪信息和操作的访问权限。 |
| HasChanges() |
检查是否正在跟踪任何新的、已删除或更改的实体,以便如果或SaveChangesAsync(CancellationToken)调用这些更改,则会将这些更改发送到数据库SaveChanges()。 |
| TrackGraph(Object, Action<EntityEntryGraphNode>) |
开始跟踪实体和可通过遍历其导航属性访问的任何实体。
遍历是递归的,因此也会扫描任何发现的实体的导航属性。
为每个已发现的实体调用指定 |
| TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>) |
首先通过遍历实体的导航属性来跟踪实体和可访问的任何实体。
遍历是递归的,因此也会扫描任何发现的实体的导航属性。
为每个已发现的实体调用指定 此方法旨在用于使用上下文的一个实例检索实体的断开连接方案中,然后使用上下文的不同实例保存更改。 例如,一个 Web 服务,其中一个服务调用从数据库检索实体,另一个服务调用将保留对实体所做的任何更改。 每个服务调用使用在调用完成后释放的上下文的新实例。 通常,每当遇到已跟踪实体或到达不应跟踪的实体时,图形的遍历都应停止。 对于此典型行为,请使用 TrackGraph(Object, Action<EntityEntryGraphNode>) 重载。 另一方面,此重载允许回调决定遍历何时结束,但 onus 位于调用方上,以确保遍历不会进入无限循环。 |
| 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 |
当关联 DbContext 跟踪的实体已从一个实体移动到另一个 EntityState 实体时触发的事件。 |
| StateChanging |
当关联 DbContext 跟踪的实体从一个实体移动到另一个 EntityState 实体时触发的事件。 |
| Tracked |
当上下文跟踪实体时触发的事件,要么是因为它是从跟踪查询返回的,要么是因为它已附加到上下文或添加到上下文中。 |
| Tracking |
当实体即将被上下文跟踪时触发的事件,要么是因为它是从跟踪查询返回的,要么是因为它正在附加到上下文或添加到上下文中。 |
显式接口实现
| 名称 | 说明 |
|---|---|
| IInfrastructure<IStateManager>.Instance |
已过时.
获取用于存储有关跟踪实体的信息的内部状态管理器。 此属性适用于扩展方法。 它不应用于应用程序代码。 |
| IResettableService.ResetState() |
重置服务,以便可以从池使用它。 |
| IResettableService.ResetStateAsync(CancellationToken) |
提供对上下文所跟踪的实体实例的更改跟踪信息和操作的访问权限。 此类的实例通常是从中 ChangeTracker 获取的,它不设计为直接在应用程序代码中构造。 |
扩展方法
| 名称 | 说明 |
|---|---|
| GetInfrastructure<T>(IInfrastructure<T>) |
从正在使用的隐藏 IInfrastructure<T>属性中获取值。 此方法通常由数据库提供程序(和其他扩展)使用。 它通常不用于应用程序代码。 |
| ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32) |
创建给定元数据的可读表示形式。 警告:不要依赖于返回的字符串的格式。 它仅用于调试,可以在版本之间任意更改。 |