EntityFrameworkServiceCollectionExtensions.AddDbContextFactory 方法

定义

重载

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

AddDbContextFactory<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext and 'Factory :> Microsoft.EntityFrameworkCore.IDbContextFactory<'Context>)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext, TFactory As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

类型参数

TContext

工厂要创建的 的类型 DbContext

TFactory

要注册的 的类型 IDbContextFactory<TContext>

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

为上下文配置 DbContextOptions 的可选操作。 这提供了一种替代方法,可以 OnConfiguring(DbContextOptionsBuilder) 替代派生上下文中的 方法来执行上下文的配置。

如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 则如果方法已在派生上下文中重写,则仍将运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。

若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。

lifetime
ServiceLifetime

用于注册工厂和选项的生存期。 默认值为 Singleton

返回

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

注解

通过注册工厂而不是直接注册上下文类型,可以轻松创建新 DbContext 实例。 对于 Blazor 应用程序和其他依赖项注入范围与上下文生存期不一致的情况,建议注册工厂。

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

为方便起见,此方法还会将上下文类型本身注册为作用域服务。 这样,上下文实例可以直接从依赖项注入范围解析,也可以根据需要由工厂创建。

此重载允许注册 的特定实现 IDbContextFactory<TContext> ,而不是使用 EF Core 附带的默认工厂。

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

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

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

适用于

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext and 'Factory :> Microsoft.EntityFrameworkCore.IDbContextFactory<'Context>)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext, TFactory As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

类型参数

TContext

工厂要创建的 的类型 DbContext

TFactory

要注册的 的类型 IDbContextFactory<TContext>

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

为上下文配置 DbContextOptions 的可选操作。 这提供了一种替代方法,可以 OnConfiguring(DbContextOptionsBuilder) 替代派生上下文中的 方法来执行上下文的配置。

如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 则如果方法已在派生上下文中重写,则仍将运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。

若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。

lifetime
ServiceLifetime

用于注册工厂和选项的生存期。 默认值为 Singleton

返回

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

注解

通过注册工厂而不是直接注册上下文类型,可以轻松创建新 DbContext 实例。 对于 Blazor 应用程序和其他依赖项注入范围与上下文生存期不一致的情况,建议注册工厂。

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

为方便起见,此方法还会将上下文类型本身注册为作用域服务。 这样,上下文实例可以直接从依赖项注入范围解析,也可以根据需要由工厂创建。

此重载允许注册 的特定实现 IDbContextFactory<TContext> ,而不是使用 EF Core 附带的默认工厂。

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

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

适用于

AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext>在 中IServiceCollection注册 ,以创建给定DbContext类型的实例。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

类型参数

TContext

工厂要创建的 的类型 DbContext

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

为上下文配置 DbContextOptions 的可选操作。 这提供了一种替代方法,可以 OnConfiguring(DbContextOptionsBuilder) 替代派生上下文中的 方法来执行上下文的配置。

如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 则如果方法已在派生上下文中重写,则仍将运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。

若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。

lifetime
ServiceLifetime

用于注册工厂和选项的生存期。 默认值为 Singleton

返回

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

注解

通过注册工厂而不是直接注册上下文类型,可以轻松创建新 DbContext 实例。 对于 Blazor 应用程序和其他依赖项注入范围与上下文生存期不一致的情况,建议注册工厂。

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

为方便起见,此方法还会将上下文类型本身注册为作用域服务。 这样,上下文实例可以直接从依赖项注入范围解析,也可以根据需要由工厂创建。

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

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

适用于

AddDbContextFactory<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

在 中IServiceCollection注册 以IDbContextFactory<TContext>创建给定DbContext类型的实例。

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

类型参数

TContext

工厂要创建的 的类型 DbContext

参数

serviceCollection
IServiceCollection

要向其中添加服务的 IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

为上下文配置 DbContextOptions 的可选操作。 这提供了一种替代方法,可以 OnConfiguring(DbContextOptionsBuilder) 替代派生上下文中的 方法来执行上下文的配置。

如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 则如果方法已在派生上下文中重写,则仍将运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。

若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。

lifetime
ServiceLifetime

用于注册工厂和选项的生存期。 默认值为 Singleton

返回

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

注解

通过注册工厂而不是直接注册上下文类型,可以轻松创建新 DbContext 实例。 对于 Blazor 应用程序和其他依赖项注入范围与上下文生存期不一致的情况,建议注册工厂。

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

为方便起见,此方法还会将上下文类型本身注册为作用域服务。 这样,上下文实例可以直接从依赖项注入范围解析,也可以根据需要由工厂创建。

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

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

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

适用于