C# 授权工厂不';t返回新对象(工作单元模式)

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,

我有一家退回UOW的工厂

 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();