ChangeTracker 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对上下文正在跟踪的实体实例的更改跟踪信息和操作的访问。 此类的实例通常是从 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) |
这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 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() |
检查是否正在跟踪任何新的、已删除的或更改的实体,以便如果在调用 或 SaveChangesAsync(CancellationToken) 时SaveChanges()将这些更改发送到数据库。 |
TrackGraph(Object, Action<EntityEntryGraphNode>) |
开始跟踪实体以及通过遍历其导航属性可访问的任何实体。
遍历是递归的,因此还将扫描任何已发现实体的导航属性。
为每个发现的实体调用指定的 |
TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>) |
开始跟踪实体以及通过遍历实体的导航属性可访问的任何实体。
遍历是递归的,因此还将扫描任何已发现实体的导航属性。
为每个发现的实体调用指定的 此方法设计用于断开连接的场景,在这些方案中,使用上下文的一个实例检索实体,然后使用上下文的不同实例保存更改。 Web 服务就是一个示例,其中一个服务调用从数据库中检索实体,另一个服务调用保留对实体所做的任何更改。 每个服务调用都使用在调用完成时释放的上下文的新实例。 通常,每当遇到已跟踪的实体或到达不应跟踪的实体时,图的遍历应停止。 对于此典型行为,请使用 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 |
当关联的 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>隐藏的属性中获取值。 此方法通常由数据库提供程序 (和其他扩展) 使用。 它通常不在应用程序代码中使用。 |