将Dbcontext配置为瞬态

时间:2017-01-29 17:26:27

标签: asp.net-core entity-framework-core

在ASP.NET Core / EntityFramework Core中,services.AddDbContext<>方法将指定的上下文添加为作用域服务。我的理解是,这是Microsoft建议的dbcontext生命周期管理。

然而,我们的工程师部门对此有很多争论,许多人认为需要尽快处理上下文。那么,将dbcontext配置为Transient仍然保持通常使用的相同Repository模式(即将上下文直接注入存储库的构造函数)以及支持灵活的单元测试的最佳方法是什么?

2 个答案:

答案 0 :(得分:37)

生命周期是AddDbContext<>()上的参数。见例:

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

这会将其添加到具有短暂生命周期的服务集合中。

答案 1 :(得分:-1)

您还可以创建具有idbcontext构造函数参数的存储库类和接口。让所有控制器构造函数在其构造函数中使用此接口。可以使用addtransient添加它。这样,Microsoft仍会根据需要控制dbcontext。上下文将由运行时管理,并在创建控制器时创建存储库实例时注入。