C# 授权工厂不';t返回新对象(工作单元模式)
我有一家退回UOW的工厂C# 授权工厂不';t返回新对象(工作单元模式),c#,dependency-injection,autofac,unit-of-work,factories,C#,Dependency Injection,Autofac,Unit Of Work,Factories,我有一家退回UOW的工厂 class UnitOfWorkFactory : IUnitOfWorkFactory { private UnitOfWork.Factory factory; public ISession Session; public IRepository Repository { get; set; } public UnitOfWorkFactory(UnitOfWork.Factory factory,
class UnitOfWorkFactory : IUnitOfWorkFactory
{
private UnitOfWork.Factory factory;
public ISession Session;
public IRepository Repository { get; set; }
public UnitOfWorkFactory(UnitOfWork.Factory factory,
ISession session, IRepository repository)
{
this.factory = factory;
this.Session = session;
Repository = repository;
}
public IUnitOfWork Create()
{
return factory(Session, Repository);
}
}
对工厂的第一次调用返回UOW的新实例。
但是,在后续调用中,它返回以前创建的实例,而不是新实例。
我使用开发人员“autofac”的说明来使用
国际奥委会注册
builder.RegisterType<Repository>().As<IRepository>().InstancePerDependency();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerLifetimeScope();
builder.RegisterType<UnitOfWorkFactory>().As<IUnitOfWorkFactory>().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerDependence();
builder.RegisterType();
builder.RegisterType();
您的类UnitOfWork注册为“每个Life雾凇作用域的实例”。由于不创建单独的生存期范围,因此每次创建IUnitOfWork时都将使用当前生存期范围,并且IUnitOfWork只创建一次
更改注册:
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerDependency();
builder.RegisterType().As().InstancePerDependence();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerDependency();