语言

DbContext 类

定义

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

public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
[System.Runtime.CompilerServices.Nullable(0)]
public class DbContext : IAsyncDisposable, 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.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>
[<System.Runtime.CompilerServices.Nullable(0)>]
type DbContext = class
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
    interface IDisposable
    interface IAsyncDisposable
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 IAsyncDisposable, IDbContextDependencies, IDbContextPoolable, IDbSetCache, 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)
继承
DbContext
特性
实现
IInfrastructure<IServiceProvider> IDisposable IResettableService Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable Microsoft.EntityFrameworkCore.Internal.IDbSetCache IAsyncDisposable Microsoft.EntityFrameworkCore.Internal.IDbQueryCache

注解

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

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

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

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

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

构造函数

名称 说明
DbContext()

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

DbContext(DbContextOptions)

使用指定的选项初始化类的新实例 DbContext 。 OnConfiguring(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[], CancellationToken)

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

FindAsync(Type, Object[])

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

FindAsync<TEntity>(Object[], CancellationToken)

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

FindAsync<TEntity>(Object[])

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

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

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

OnConfiguring(DbContextOptionsBuilder)

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

OnModelCreating(ModelBuilder)

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

Query<TQuery>()
已过时.

创建可用于查询 < a0 /> 实例的 实例。

Remove(Object)

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

Remove<TEntity>(TEntity)

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

RemoveRange(IEnumerable<Object>)

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

RemoveRange(Object[])

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

SaveChanges()

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

SaveChanges(Boolean)

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

SaveChangesAsync(Boolean, CancellationToken)

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

SaveChangesAsync(CancellationToken)

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

Set<TEntity>()

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

Set<TEntity>(String)

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

Update(Object)

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

Update<TEntity>(TEntity)

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

UpdateRange(IEnumerable<Object>)

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

UpdateRange(Object[])

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

事件

名称 说明
SaveChangesFailed

如果调用 SaveChanges 或 SaveChangesAsync 失败并出现异常,则引发事件。

SavedChanges

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

SavingChanges

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

显式接口实现

名称 说明
IDbContextDependencies.ChangeDetector

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

IDbContextDependencies.EntityFinderFactory

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

IDbContextDependencies.EntityFinderSource

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

IDbContextDependencies.EntityGraphAttacher

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

IDbContextDependencies.ExceptionDetector

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

IDbContextDependencies.InfrastructureLogger

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

IDbContextDependencies.ManyToManyLoaderFactory

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

IDbContextDependencies.QueryProvider

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

IDbContextDependencies.QuerySource

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

IDbContextDependencies.SetSource

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

IDbContextDependencies.StateManager

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

IDbContextDependencies.UpdateLogger

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

IDbContextPoolable.ClearLease()

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

IDbContextPoolable.ResetState()

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

IDbContextPoolable.Resurrect(DbContextPoolConfigurationSnapshot)

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

IDbContextPoolable.SetLease(DbContextLease)

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

IDbContextPoolable.SetLeaseAsync(DbContextLease, CancellationToken)

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

IDbContextPoolable.SetPool(IDbContextPool)

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

IDbContextPoolable.SnapshotConfiguration()

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

IDbQueryCache.GetOrAddQuery(IDbQuerySource, Type)

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

IDbSetCache.GetOrAddSet(IDbSetSource, String, Type)

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

IDbSetCache.GetOrAddSet(IDbSetSource, Type)

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

IDbSetCache.GetSets()

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

IInfrastructure<IServiceProvider>.Instance

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

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

IResettableService.ResetState()

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

IResettableService.ResetStateAsync(CancellationToken)

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

扩展方法

名称 说明
CreateProxy(DbContext, Type, Object[])

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

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

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

CreateProxy<TEntity>(DbContext, Object[])

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

GetInfrastructure<T>(IInfrastructure<T>)

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

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

适用于