有这样的代码:如何使用autofac并解析新的实例并忽略每个请求的注册单个或实例?
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
我怎么能解决的UnitOfWork的新实例?不是要求相同,真的是新的。
有这样的代码:如何使用autofac并解析新的实例并忽略每个请求的注册单个或实例?
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
我怎么能解决的UnitOfWork的新实例?不是要求相同,真的是新的。
这可能看起来不是主题,但只要您的UnitOfWork为每个请求创建DbContext的新实例,注册AutoFac Dependency的方式就没有问题。你可以看到,我通过参数less构造函数处理上下文并为每个请求创建一个新的实例。
我用的是这样的: -
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>();
}
}
我使用工厂的dbcontext并创建它每个请求一次 这里代码简单[链接](https://github.com/dmitrievMV/OnionIdentity /blob/master/OnionIdentity.Data/Infrastructure/DbFactory.cs) – dmitrievMV
你想拥有一个以上的单位的每个请求的工作?你可以发布你的UnitOfWork对象的代码吗?如果它引用一个ORM映射器(如EF db上下文),则会遇到问题。 – Derek
改为使用'InstancePerDependency'。或者将第二个命名实例注册为“InstancePerDependency”,并在需要新实例的地方使用该实例。或者使用“新的UnitOfWork”。 –
@Derek,是的,我想为新线程的dbcontext的新实例。 – dmitrievMV