Your class UnitOfWork is registered as "Instance per liferime scope". Since you don't create a separate lifetime scope, current lifetime scope will be used every time you create a IUnitOfWork, and the IUnitOfWork will be created only once.
Change the registration:
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerDependency();