如果默认添加DbContext作用域,为什么要添加它



使用.NET应用程序的Clean Architecture模板,在设置DbContext时,默认情况下会添加一个作用域服务。那么,为什么需要为范围添加一行呢。这是否提供了额外的功能?

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
configuration.GetConnectionString("DefaultConnection")));

services.AddScoped<IApplicationDbContext>(provider => 
provider.GetService<ApplicationDbContext>());
}

第二行在依赖注入容器上注册接口。它增加了注入接口而不是具体实现的可能性。

使用AddScoped的原因是AddDbContext还使用了请求范围的实例。使用请求范围的实例而不是单例实例的原因是DbContext不是线程安全的,因此不应跨线程重复使用同一实例。

相关内容

  • 没有找到相关文章

最新更新