EntityFrameworkServiceCollectionExtensions.AddDbContext 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
AddDbContext<TContext>(IServiceCollection, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。 在应用程序中使用依赖项注入时,可以使用此方法,例如使用 ASP.NET。 有关设置依赖项注入的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=526890。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, contextLifetime As ServiceLifetime) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(ServiceLifetime.Scoped);
}
适用于
AddDbContext<TContext>(IServiceCollection, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, contextLifetime As ServiceLifetime, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(ServiceLifetime.Scoped);
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
适用于
AddDbContext<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。 在应用程序中使用依赖项注入时,可以使用此方法,例如使用 ASP.NET。 有关设置依赖项注入的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=526890。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(options => options.UseSqlServer(connectionString));
}
适用于
AddDbContext<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。 在应用程序中使用依赖项注入时,可以使用此方法,例如使用 ASP.NET。 有关设置依赖项注入的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=526890.
此重载具有一个 optionsAction
,它提供应用程序 IServiceProvider。
如果要设置 Entity Framework 以从主应用程序服务提供程序解析其内部服务,这非常有用。
默认情况下,建议使用其他重载,该重载允许实体框架为内部实体框架服务创建和维护自己的 IServiceProvider 重载。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : 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 AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<IServiceProvider,DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services
.AddEntityFrameworkSqlServer()
.AddDbContext<MyContext>((serviceProvider, options) =>
options.UseSqlServer(connectionString)
.UseInternalServiceProvider(serviceProvider));
}
适用于
AddDbContext<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(options => options.UseSqlServer(connectionString));
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
适用于
AddDbContext<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContext(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContext
要注册的上下文的类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<IServiceProvider,DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services
.AddEntityFrameworkSqlServer()
.AddDbContext<MyContext>((serviceProvider, options) =>
options.UseSqlServer(connectionString)
.UseInternalServiceProvider(serviceProvider));
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
此重载提供 optionsAction
应用程序的 IServiceProvider。 如果要设置 Entity Framework Core 以从主应用程序服务提供程序解析其内部服务,这非常有用。 默认情况下,我们建议使用 AddDbContext<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime) ,它允许实体框架为内部实体框架服务创建和维护自己的 IServiceProvider 实体框架。
适用于
AddDbContext<TContextService,TContextImplementation>(IServiceCollection, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContextService : class where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'ContextService : null and 'ContextImplementation :> Microsoft.EntityFrameworkCore.DbContext and 'ContextImplementation :> 'ContextService)
<Extension()>
Public Function AddDbContext(Of TContextService As Class, TContextImplementation As Class) (serviceCollection As IServiceCollection, contextLifetime As ServiceLifetime, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContextService
用于解析容器中的上下文的类或接口。
- TContextImplementation
要创建的具体实现类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(ServiceLifetime.Scoped);
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
适用于
AddDbContext<TContextService,TContextImplementation>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'ContextImplementation :> Microsoft.EntityFrameworkCore.DbContext and 'ContextImplementation :> 'ContextService)
<Extension()>
Public Function AddDbContext(Of TContextService, TContextImplementation) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContextService
用于解析容器中的上下文的类或接口。
- TContextImplementation
要创建的具体实现类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services.AddDbContext<MyContext>(options => options.UseSqlServer(connectionString));
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
适用于
AddDbContext<TContextService,TContextImplementation>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime)
在 中 IServiceCollection将给定上下文注册为服务。
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContext<TContextService,TContextImplementation> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime contextLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Microsoft.Extensions.DependencyInjection.ServiceLifetime optionsLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) where TContextImplementation : Microsoft.EntityFrameworkCore.DbContext, TContextService;
static member AddDbContext : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'ContextImplementation :> Microsoft.EntityFrameworkCore.DbContext and 'ContextImplementation :> 'ContextService)
<Extension()>
Public Function AddDbContext(Of TContextService, TContextImplementation) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional contextLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped, Optional optionsLifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IServiceCollection
类型参数
- TContextService
用于解析容器中的上下文的类或接口。
- TContextImplementation
要创建的具体实现类型。
参数
- serviceCollection
- IServiceCollection
要向其中添加服务的 IServiceCollection。
- optionsAction
- Action<IServiceProvider,DbContextOptionsBuilder>
为上下文配置 的 DbContextOptions 可选操作。 这提供了一种替代方法,可以替代在派生上下文中重写 OnConfiguring(DbContextOptionsBuilder) 方法来执行上下文配置。
如果此处提供了操作, OnConfiguring(DbContextOptionsBuilder) 如果在派生的上下文上重写了该方法,则仍会运行该方法。 OnConfiguring(DbContextOptionsBuilder) 除了在此处执行的配置外,还将应用配置。
若要将选项传递到上下文中,需要在上下文中公开一个构造函数,该构造函数采用 DbContextOptions<TContext> 并将其传递给 的基本 DbContext构造函数。
- contextLifetime
- ServiceLifetime
在容器中注册 DbContext 服务的生存期。
- optionsLifetime
- ServiceLifetime
在容器中注册 DbContextOptions 服务的生存期。
返回
相同的服务集合,以便可以链接多个调用。
示例
public void ConfigureServices(IServiceCollection services)
{
var connectionString = "connection string to database";
services
.AddEntityFrameworkSqlServer()
.AddDbContext<MyContext>((serviceProvider, options) =>
options.UseSqlServer(connectionString)
.UseInternalServiceProvider(serviceProvider));
}
注解
在应用程序中使用依赖项注入时使用此方法,例如使用 ASP.NET Core。 对于不使用依赖项注入的应用程序,请考虑直接使用其构造函数创建 DbContext 实例。 OnConfiguring(DbContextOptionsBuilder)然后,可以重写 方法以配置连接字符串和其他选项。
Entity Framework Core 不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例 ,请参阅避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 将 DbContext 与依赖项注入配合使用 。
此重载提供 optionsAction
应用程序的 IServiceProvider。 如果要设置 Entity Framework Core 以从主应用程序服务提供程序解析其内部服务,这非常有用。 默认情况下,我们建议使用 AddDbContext<TContextService,TContextImplementation>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime, ServiceLifetime) ,它允许实体框架为内部实体框架服务创建和维护自己的 IServiceProvider 实体框架。