代码如下:
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
我如何解决UnitOfWork的新实例?根据要求不一样,真的很新。
答案 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>();
}
}