EntityFrameworkServiceCollectionExtensions.AddDbContextFactory 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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 工厂。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈