处置和注入.NET核心的DBContexts



我知道使用上下文的一种方法是通过使用语句。

我像在控制器中一样使用它

[ApiController]
public class MyController : ControllerBase
{
    [HttpPost]
    public ActionResult PostActionHere(ActionRequestClass request)
    {
        using (var context = new MyEntityFrameworkContext())
        {
         ....
         // use context here
         context.SaveChanges()
         ....
        }
    }
}

我想开始将其注入控制器。主要是因为我认为阅读更容易,并且使用.NET核心依赖注入更均匀。

[ApiController]
public class MyController : ControllerBase
{
    private MyEntityFrameworkContext _myDb;
    public MyController(MyEntityFrameworkContext myDb)
    {
        _myDb = myDb;
    }
    [HttpPost]
    public ActionResult PostActionHere(ActionRequestClass request)
    {
     ....
     // use context here
     _myDb.SaveChanges()  
     ....      
    }
}

在我的 startup.cs 中:

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyEntityFrameworkContext >(options => 
 options.UseSqlServer(Configuration.GetConnectionString("MyEntityFrameworkDatabase")));
}

我担心的是注入它,我失去了using语句所带来的处置属性。真的吗?随时建议替代方法。

注入它,我将失去使用语句随附的处置属性。真的吗?

否:

AddDbContext扩展方法寄存了DBContext类型 默认情况下,范围界定寿命。

配置DBContext

以及示波器(此处httprequest(结束时,范围的寿命对象将被处置。

最新更新