我已经配置了我的IoC容器 Unity ,以便在我的工作单元的构造函数中解析我的IDbContext
EntityFramwork DbContext
。
我想知道这是不是最好的做法,或者我是否只是未来头痛的非处理DbContext。这是一个ASP.Net MVC应用程序,因此会有很多短寿命容器。每个容器的生命周期为每个请求
有什么建议吗?
public class UnitOfWork : IUnitOfWork
{
private readonly IDbContext context;
public UnitOfWork(IDbContext context)
{
this.context = context;
}
}
public class SampleService : ISampleService
{
private readonly IUnitOfWork unitOfWork;
public SampleService(IUnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
}
答案 0 :(得分:1)
让容器管理IDbContext并设置为PerRequest生存期是最佳做法。您的代码看起来很干净,可以通过IoC容器轻松管理。
作为@Steven linked to,通常的做法是使用该单位或工作并立即处置。
如果可以正确配置Unity IoC容器以在请求结束时处理IDbContext,那么最好。在某些情况下使用ASP.NET,您可能必须在Application_EndRequest()
中进行处理答案 1 :(得分:1)
我认为您的解决方案很好,但有关在Unity文档中使用每个请求生命周期管理器的警告:Per Request Lifetime Management。我想只要你知道自己在做什么,就会像预期的那样使用那个终身经理。您可以使用的另一个选项是创建基本控制器并在该控制器上实现IDisposable。 MVC将在请求的最后调用dispose,因此您也可以处理任何对象。