Change IUnitOfWork to Func<IUnitOfWork>