AddDbContext()服务类型激活模式

时间:2016-06-13 02:59:05

标签: asp.net-core asp.net-core-mvc

使用ASP.NET核心RC2创建新的Web应用程序时,它在Startup.cs文件中包含以下代码 -

services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

我的问题是 - 注入此DbContext对象的激活模式是什么?它是短暂的还是范围的还是别的?

谢谢。

1 个答案:

答案 0 :(得分:2)

AddDbContext<TContext>扩展方法在EntityFrameworkServiceCollectionExtensions.csEntityFrameworkCore文件中定义,包含以下内容:

serviceCollection.TryAddSingleton(p => DbContextOptionsFactory<TContext>(p, optionsAction));
serviceCollection.AddSingleton<DbContextOptions>(p => p.GetRequiredService<DbContextOptions<TContext>>());

serviceCollection.TryAdd(new ServiceDescriptor(typeof(TContext), typeof(TContext), contextLifetime));

默认情况下,contextLifetime为ServiceLifetime.Scoped,但可以更改。

请记住,通常,您始终可以在github上找到并分析ASP.NET核心源