private void Initialize(SaveManagerInputDto manager, EntityDependency[] dependencies)
        {
            RegisterCommandRepositoryFactory <Manager>(() => new ManagerCommandRepository());

            RegisterCommandRepositoryFactory <Employee>(() => new EmployeeCommandRepository());

            var managerDependency = (Manager)dependencies?.SingleOrDefault()?.Entity;

            RootEntity = new Manager
            {
                Id           = manager.ManagerId,
                Department   = manager.Department,
                Name         = manager.Name,
                SupervisorId = (managerDependency != null) ? managerDependency.Id : manager.SupervisorId
            };

            Enqueue(new SaveEntityCommandOperation <Manager>(RootEntity, dependencies));

            Enqueue(new DeleteLinksCommandOperation <Manager>(RootEntity, "UnlinkEmployeesFromManager"));

            if (manager.Employees?.Any() == true)
            {
                foreach (var dto in manager.Employees)
                {
                    ILinkedAggregateCommandOperation operation;

                    if (dto is EmployeeInputDto)
                    {
                        operation = new AddLinkedAggregateCommandOperation <Manager, SaveEmployeeCommandAggregate, EmployeeInputDto>(
                            RootEntity,
                            (EmployeeInputDto)dto,
                            new EntityDependency[]
                        {
                            new EntityDependency
                            {
                                Entity   = RootEntity,
                                Selector = "Employees"
                            }
                        }
                            );

                        Enqueue(operation);
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }
                }
            }
        }
 public SaveManagerCommandAggregate(SaveManagerInputDto manager, EntityDependency[] dependencies = null) : base(new DomainFramework.DataAccess.RepositoryContext(ManagerWithEmployeesConnectionClass.GetConnectionName()))
 {
     Initialize(manager, dependencies);
 }