Unity.Webforms每个请求的dbcontext

时间:2015-10-20 01:51:42

标签: asp.net entity-framework webforms unity-container dbcontext

我正在使用Unity和Unity.Webforms引导程序实现依赖注入。我的webforms应用程序中有一个DbFactory初始化我的DbContext,我想为每个Web请求创建一个这个工厂的实例,以便我的各种服务将在同一工作单元下更新。

我的问题是,Unity.Webforms引导程序是否为我处理这个问题?我相信这个post中的答案建议执行以下操作,以便按请求完成单个上下文。

container.RegisterType<IDbFactory,DbFactory>(new HierarchicalLifetimeManager()); 

这是正确的,我需要做的就是这样吗?我担心它会为每个请求创建一个上下文,但它是一个应用程序范围的上下文(所有用户共享相同的上下文)。

这可能不是必需的,但以防万一,这是我的DbFactory的实现代码。

public class DbFactory : Disposable, IDbFactory
{
   MyDbContext dbContext;

   public MyDbContext Init()
   {
      return dbContext ?? (dbContext = new MyDbContext());
   }

   protected override void DisposeCore()
   {
       if(dbContext != null)
       {
           dbContext.Dispose();
       }
   }
}

public class Disposable : IDisposable
{

    private bool isDisposed;

    ~Disposable()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private void Dispose(bool disposing)
    {
        if(!isDisposed && disposing)
        {
            DisposeCore();
        }
        isDisposed = true;
    }

    protected virtual void DisposeCore(){}
}

0 个答案:

没有答案
相关问题