DbContext 类

定义

DbContext 实例表示与数据库的会话,可用于查询和保存实体的实例。 DbContext 是工作单元和存储库模式的组合。

public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbQueryCache, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IAsyncDisposable, IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbQueryCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IAsyncDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
type DbContext = class
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
    interface IDisposable
    interface IAsyncDisposable
Public Class DbContext
Implements IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbQueryCache, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IAsyncDisposable, IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
继承
DbContext
实现
IInfrastructure<IServiceProvider> IDisposable Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable Microsoft.EntityFrameworkCore.Internal.IDbSetCache Microsoft.EntityFrameworkCore.Internal.IDbQueryCache IResettableService IAsyncDisposable

注解

Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题

通常,创建一个派生自 DbContext 的类,并包含 DbSet<TEntity> 模型中每个实体的属性。 DbSet<TEntity>如果属性具有公共资源库,则会在创建派生上下文的实例时自动初始化这些属性。

OnConfiguring(DbContextOptionsBuilder)重写 方法以配置数据库 (和其他选项,) 用于上下文。 或者,如果更愿意在外部执行配置,而不是在上下文中执行内联配置,则可以使用 DbContextOptionsBuilder<TContext> (或 DbContextOptionsBuilder) 在外部创建 (或 DbContextOptions) 的DbContextOptions<TContext>实例,并将其传递给 的基本DbContext构造函数。

通过对派生上下文中的属性中找到 DbSet<TEntity> 的实体类运行一组约定来发现模型。 若要进一步配置按约定发现的模型,可以重写 OnModelCreating(ModelBuilder) 方法。

有关详细信息和示例,请参阅 DbContext 生存期、配置和初始化使用 EF Core 查询数据更改跟踪和使用 EF Core 保存数据

构造函数

DbContext()

初始化 DbContext 类的新实例。 OnConfiguring(DbContextOptionsBuilder)将调用 方法来配置数据库 (以及) 用于此上下文的其他选项。

DbContext(DbContextOptions)

使用指定的选项初始化 类的新实例 DbContextOnConfiguring(DbContextOptionsBuilder)仍会调用 方法以允许进一步配置选项。

属性

ChangeTracker

提供对此上下文所跟踪的实体实例的信息和操作的访问。

ContextId

上下文实例和池租约的唯一标识符(如果有)。

Database

提供对此上下文的数据库相关信息和操作的访问。

Model

有关实体形状、实体之间的关系以及它们如何映射到数据库的元数据。 可能不包括初始化数据库所需的所有信息。

方法

Add(Object)

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

Add<TEntity>(TEntity)

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddAsync(Object, CancellationToken)

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddAsync<TEntity>(TEntity, CancellationToken)

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddRange(IEnumerable<Object>)

开始跟踪给定的实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddRange(Object[])

开始跟踪给定的实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddRangeAsync(IEnumerable<Object>, CancellationToken)

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

AddRangeAsync(Object[])

开始跟踪给定实体,以及尚未跟踪的任何其他可访问实体, Added 状态为,以便在调用 时 SaveChanges() 将其插入数据库。

Attach(Object)

默认情况下,使用 状态开始跟踪给定实体和可从给定实体 Unchanged 访问的条目,但有关将使用不同的状态的情况,请参阅下文。

Attach<TEntity>(TEntity)

默认情况下,使用 状态开始跟踪给定实体和可从给定实体 Unchanged 访问的条目,但有关将使用不同的状态的情况,请参阅下文。

AttachRange(IEnumerable<Object>)

默认情况下,使用 状态开始跟踪可从给定实体访问的给定实体 Unchanged 和条目,但有关将使用不同的状态的情况,请参阅下文。

AttachRange(Object[])

默认情况下,使用 状态开始跟踪可从给定实体访问的给定实体 Unchanged 和条目,但有关将使用不同的状态的情况,请参阅下文。

ConfigureConventions(ModelConfigurationBuilder)

重写此方法,以在默认值运行之前设置和配置约定。 在 之前 OnModelCreating(ModelBuilder)调用此方法。

Dispose()

释放为此上下文分配的资源。

DisposeAsync()

释放为此上下文分配的资源。

Entry(Object)

EntityEntry获取给定实体的 。 条目提供对实体的更改跟踪信息和操作的访问。

Entry<TEntity>(TEntity)

EntityEntry<TEntity>获取给定实体的 。 条目提供对实体的更改跟踪信息和操作的访问。

Find(Type, Object[])

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

Find<TEntity>(Object[])

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

FindAsync(Type, Object[])

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

FindAsync(Type, Object[], CancellationToken)

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

FindAsync<TEntity>(Object[])

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

FindAsync<TEntity>(Object[], CancellationToken)

查找带给定主键值的实体。 如果上下文正在跟踪具有给定主键值的实体,则会立即返回该实体,而不会向数据库发出请求。 否则,将查询具有给定主键值的实体的数据库,如果找到此实体,则会附加到上下文并返回。 如果未找到任何实体,则返回 null。

FromExpression<TResult>(Expression<Func<IQueryable<TResult>>>)

为给定查询表达式创建可查询。

OnConfiguring(DbContextOptionsBuilder)

重写此方法以配置数据库 (以及) 用于此上下文的其他选项。 对于所创建的上下文的每个实例,都会调用此方法。 默认实现不执行任何操作。

OnModelCreating(ModelBuilder)

重写此方法以进一步配置根据约定从派生上下文的属性中 DbSet<TEntity> 公开的实体类型发现的模型。 生成的模型可能会被缓存并重新用于派生上下文的后续实例。

Query<TQuery>()
已过时.

DbSet<TEntity>创建可用于查询 实例的 TQuery

Remove(Object)

开始跟踪处于 状态的给定实体,以便调用 时SaveChanges(),该实体Deleted将从数据库中删除。

Remove<TEntity>(TEntity)

开始跟踪处于 状态的给定实体,以便调用 时SaveChanges(),该实体Deleted将从数据库中删除。

RemoveRange(IEnumerable<Object>)

开始跟踪处于 状态的给定实体,以便调用 时SaveChanges(),该实体Deleted将从数据库中删除。

RemoveRange(Object[])

开始跟踪处于 状态的给定实体,以便调用 时SaveChanges(),该实体Deleted将从数据库中删除。

SaveChanges()

将此上下文中所做的所有更改保存到数据库。

SaveChanges(Boolean)

将此上下文中所做的所有更改保存到数据库。

SaveChangesAsync(Boolean, CancellationToken)

将此上下文中所做的所有更改保存到数据库。

SaveChangesAsync(CancellationToken)

将此上下文中所做的所有更改保存到数据库。

Set<TEntity>()

DbSet<TEntity>创建可用于查询和保存 实例的 TEntity

Set<TEntity>(String)

DbSet<TEntity>为可用于查询和保存 实例的TEntity共享类型实体类型创建 。

Update(Object)

默认情况下,使用 状态开始跟踪给定实体和可从给定实体 Modified 访问的条目,但有关将使用不同的状态的情况,请参阅下文。

Update<TEntity>(TEntity)

默认情况下,使用 状态开始跟踪给定实体和可从给定实体 Modified 访问的条目,但有关将使用不同的状态的情况,请参阅下文。

UpdateRange(IEnumerable<Object>)

默认情况下,使用 状态开始跟踪可从给定实体访问的给定实体 Modified 和条目,但有关将使用不同的状态的情况,请参阅下文。

UpdateRange(Object[])

默认情况下,使用 状态开始跟踪可从给定实体访问的给定实体 Modified 和条目,但有关将使用不同的状态的情况,请参阅下文。

事件

SaveChangesFailed

如果调用 SaveChangesSaveChangesAsync 失败并出现异常,则触发事件。

SavedChanges

在调用 SaveChanges 或 结束时触发的事件 SaveChangesAsync

SavingChanges

在调用 SaveChanges 或 的开始时触发的事件 SaveChangesAsync

显式接口实现

IDbContextDependencies.ChangeDetector

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.EntityFinderFactory

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.EntityFinderSource

此 API 支持 Entity Framework Core 基础结构,不应直接从代码使用。 将来的版本中可能会更改或删除此 API。

IDbContextDependencies.EntityGraphAttacher

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.ExceptionDetector

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.InfrastructureLogger

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.QueryProvider

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.QuerySource

此 API 支持 Entity Framework Core 基础结构,不应直接从代码使用。 将来的版本中可能会更改或删除此 API。

IDbContextDependencies.SetSource

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.StateManager

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextDependencies.UpdateLogger

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.ClearLease()

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.ResetState()

DbContext 实例表示与数据库的会话,可用于查询和保存实体的实例。 DbContext 是工作单元和存储库模式的组合。

IDbContextPoolable.Resurrect(DbContextPoolConfigurationSnapshot)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.SetLease(DbContextLease)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.SetLeaseAsync(DbContextLease, CancellationToken)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.SetPool(IDbContextPool)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbContextPoolable.SnapshotConfiguration()

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbQueryCache.GetOrAddQuery(IDbQuerySource, Type)

此 API 支持 Entity Framework Core 基础结构,不应直接从代码使用。 将来的版本中可能会更改或删除此 API。

IDbSetCache.GetOrAddSet(IDbSetSource, String, Type)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbSetCache.GetOrAddSet(IDbSetSource, Type)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IDbSetCache.GetSets()

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IInfrastructure<IServiceProvider>.Instance

获取用于解析服务的作用域 IServiceProvider

此属性适用于需要利用未在公共 API 图面中直接公开的服务的扩展方法。

IResettableService.ResetState()

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

IResettableService.ResetStateAsync(CancellationToken)

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 API 相同的兼容性标准的约束。 可能会在任何版本中更改或删除它,而无需通知。 仅应在代码中非常谨慎地直接使用它,并且知道在更新到新的 Entity Framework Core 版本时这样做可能会导致应用程序失败。

扩展方法

GetInfrastructure<T>(IInfrastructure<T>)

从使用 IInfrastructure<T>隐藏的属性获取值。

此方法通常由数据库提供程序 (和其他扩展) 使用。 它通常不用于应用程序代码。

CreateProxy(DbContext, Type, Object[])

如果已启用代理创建,则为实体类型创建代理实例。

CreateProxy<TEntity>(DbContext, Action<TEntity>, Object[])

如果已启用代理创建,则为实体类型创建代理实例。

CreateProxy<TEntity>(DbContext, Object[])

如果已启用代理创建,则为实体类型创建代理实例。

适用于