EntityFrameworkServiceCollectionExtensions.AddDbContextPool 方法

定义

重载

AddDbContextPool<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

AddDbContextPool<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

AddDbContextPool<TContextService,TContextImplementation>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

AddDbContextPool<TContextService,TContextImplementation>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

AddDbContextPool<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 128) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 1024) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextPool : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * int -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextPool(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of DbContextOptionsBuilder), Optional poolSize As Integer = 128) As IServiceCollection
<Extension()>
Public Function AddDbContextPool(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of DbContextOptionsBuilder), Optional poolSize As Integer = 1024) As IServiceCollection

类型参数

TContext

要注册的上下文的类型。

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

为上下文配置 DbContextOptions 所需的操作。 使用上下文池时,必须在外部执行选项配置; OnConfiguring(DbContextOptionsBuilder) 不会调用 。

poolSize
Int32

设置池保留的最大实例数。 默认值为 1024。

返回

相同的服务集合,以便可以链接多个调用。

注解

DbContext 池可以通过重用上下文实例来提高高吞吐量方案中的性能。 但是,对于大多数应用程序,此性能提升非常小。 请注意,使用池时,上下文配置无法在使用之间更改,并且注入到上下文中的作用域服务将从初始范围解析一次。 仅当性能测试表明 DbContext 池提供了真正的提升时,才考虑使用 DbContext 池。

在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。

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

有关详细信息和示例,请参阅将 DbContext 与依赖项注入配合使用和使用 DbContext 池

适用于

AddDbContextPool<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 128) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 1024) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextPool : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * int -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextPool(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional poolSize As Integer = 128) As IServiceCollection
<Extension()>
Public Function AddDbContextPool(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional poolSize As Integer = 1024) As IServiceCollection

类型参数

TContext

要注册的上下文的类型。

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

为上下文配置 DbContextOptions 所需的操作。 使用上下文池时,必须在外部执行选项配置; OnConfiguring(DbContextOptionsBuilder) 不会调用 。

poolSize
Int32

设置池保留的最大实例数。 默认值为 1024。

返回

相同的服务集合,以便可以链接多个调用。

注解

DbContext 池可以通过重用上下文实例来提高高吞吐量方案中的性能。 但是,对于大多数应用程序,此性能提升非常小。 请注意,使用池时,上下文配置无法在使用之间更改,并且注入到上下文中的作用域服务将从初始范围解析一次。 仅当性能测试表明 DbContext 池提供了真正的提升时,才考虑使用 DbContext 池。

在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。

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

有关详细信息和示例,请参阅将 DbContext 与依赖项注入配合使用和使用 DbContext 池

此重载提供 optionsAction 应用程序的 IServiceProvider。 如果要设置 Entity Framework Core 以从主应用程序服务提供程序解析其内部服务,这非常有用。 默认情况下,我们建议使用 AddDbContextPool<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32) ,它允许实体框架为内部实体框架服务创建和维护自己的 IServiceProvider 实体框架。

适用于

AddDbContextPool<TContextService,TContextImplementation>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 128) where TContextService : class where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 1024) where TContextService : class where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
static member AddDbContextPool : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * int -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'ContextService : null and 'ContextImplementation :> Microsoft.EntityFrameworkCore.DbContext and 'ContextImplementation :> 'ContextService)
<Extension()>
Public Function AddDbContextPool(Of TContextService As Class, TContextImplementation As Class) (serviceCollection As IServiceCollection, optionsAction As Action(Of DbContextOptionsBuilder), Optional poolSize As Integer = 128) As IServiceCollection
<Extension()>
Public Function AddDbContextPool(Of TContextService As Class, TContextImplementation As Class) (serviceCollection As IServiceCollection, optionsAction As Action(Of DbContextOptionsBuilder), Optional poolSize As Integer = 1024) As IServiceCollection

类型参数

TContextService

用于解析容器中的上下文的类或接口。

TContextImplementation

要创建的具体实现类型。

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

为上下文配置 DbContextOptions 所需的操作。 使用上下文池时,必须在外部执行选项配置; OnConfiguring(DbContextOptionsBuilder) 不会调用 。

poolSize
Int32

设置池保留的最大实例数。 默认值为 1024。

返回

相同的服务集合,以便可以链接多个调用。

注解

DbContext 池可以通过重用上下文实例来提高高吞吐量方案中的性能。 但是,对于大多数应用程序,此性能提升非常小。 请注意,使用池时,上下文配置无法在使用之间更改,并且注入到上下文中的作用域服务将从初始范围解析一次。 仅当性能测试表明 DbContext 池提供了真正的提升时,才考虑使用 DbContext 池。

在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。

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

有关详细信息和示例,请参阅将 DbContext 与依赖项注入配合使用和使用 DbContext 池

适用于

AddDbContextPool<TContextService,TContextImplementation>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, Int32)

将给定 DbContext 的 注册为 中的 IServiceCollection服务,并为此注册启用 DbContext 池。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 128) where TContextService : class where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextPool<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, int poolSize = 1024) where TContextService : class where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
static member AddDbContextPool : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * int -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'ContextService : null and 'ContextImplementation :> Microsoft.EntityFrameworkCore.DbContext and 'ContextImplementation :> 'ContextService)
<Extension()>
Public Function AddDbContextPool(Of TContextService As Class, TContextImplementation As Class) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional poolSize As Integer = 128) As IServiceCollection
<Extension()>
Public Function AddDbContextPool(Of TContextService As Class, TContextImplementation As Class) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional poolSize As Integer = 1024) As IServiceCollection

类型参数

TContextService

用于解析容器中的上下文的类或接口。

TContextImplementation

要创建的具体实现类型。

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

为上下文配置 DbContextOptions 所需的操作。 使用上下文池时,必须在外部执行选项配置; OnConfiguring(DbContextOptionsBuilder) 不会调用 。

poolSize
Int32

设置池保留的最大实例数。 默认值为 1024。

返回

相同的服务集合,以便可以链接多个调用。

注解

DbContext 池可以通过重用上下文实例来提高高吞吐量方案中的性能。 但是,对于大多数应用程序,此性能提升非常小。 请注意,使用池时,上下文配置无法在使用之间更改,并且注入到上下文中的作用域服务将从初始范围解析一次。 仅当性能测试表明 DbContext 池提供了真正的提升时,才考虑使用 DbContext 池。

在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。

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

有关详细信息和示例,请参阅将 DbContext 与依赖项注入配合使用和使用 DbContext 池

此重载提供 optionsAction 应用程序的 IServiceProvider。 如果要设置 Entity Framework Core 以从主应用程序服务提供程序解析其内部服务,这非常有用。 默认情况下,我们建议使用 AddDbContextPool<TContextService,TContextImplementation>(IServiceCollection, Action<DbContextOptionsBuilder>, Int32) ,它允许实体框架为内部实体框架服务创建和维护自己的 IServiceProvider 实体框架。

适用于