如何使用autofac并解析新实例并忽略每个请求的寄存器单个或实例?

时间:2016-11-28 09:00:45

标签: c# asp.net-mvc autofac

代码如下:

builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();

我如何解决UnitOfWork的新实例?根据要求不一样,真的很新。

1 个答案:

答案 0 :(得分:0)

这似乎不是主题,但只要您的UnitOfWork正在为每个请求创建DbContext的新实例,您如何注册AutoFac依赖项就可以了。

如您所见,我处理上下文并通过参数less constructor为每个请求创建一个新实例。

我使用这样的东西: -

public class DbUnitOfWork : IUnitOfWork
    {
        private readonly MyDbContext _context;

        public DbUnitOfWork()
        {
            _context = new MyDbContext();
        }

        public void Dispose()
        {
            _context.Dispose();
        }

        public void Commit()
        {
            try
            {
               _context.SaveChanges();
            }
            catch (DbEntityValidationException exception)
            {
                throw exception;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public Task CommitAsync()
        {

            try
            {
                return _context.SaveChangesAsync();
            }
            catch (DbEntityValidationException exception)
            {
                throw exception;
            }
            catch (Exception ex)
            {
                throw ex;
            }


        }

        public Task CommitAsync(CancellationToken cancellationToken)
        {
            return _context.SaveChangesAsync(cancellationToken);
        }

        internal DbSet<T> Set<T>() where T : Entity
        {
            return _context.Set<T>();
        }
    }