private void Initialize(VehicleInputDto vehicle, EntityDependency[] dependencies)
        {
            RegisterCommandRepositoryFactory <Vehicle>(() => new VehicleCommandRepository());

            RegisterCommandRepositoryFactory <Vehicle_Cylinders_CommandRepository.RepositoryKey>(() => new Vehicle_Cylinders_CommandRepository());

            var mechanicDependency = (Mechanic)dependencies?.SingleOrDefault()?.Entity;

            RootEntity = new Vehicle
            {
                Id         = vehicle.VehicleId,
                Model      = vehicle.Model,
                MechanicId = (mechanicDependency != null) ? mechanicDependency.Id : vehicle.MechanicId
            };

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

            Enqueue(new DeleteLinkedValueObjectCommandOperation <Vehicle, Cylinder, Vehicle_Cylinders_CommandRepository.RepositoryKey>(RootEntity));

            foreach (var dto in vehicle.Cylinders)
            {
                var cylinderValueObject = new Cylinder
                {
                    Diameter = dto.Diameter
                };

                Enqueue(new AddLinkedValueObjectCommandOperation <Vehicle, Cylinder, Vehicle_Cylinders_CommandRepository.RepositoryKey>(RootEntity, cylinderValueObject));
            }
        }
 public SaveVehicleCommandAggregate(VehicleInputDto vehicle, EntityDependency[] dependencies = null) : base(new DomainFramework.DataAccess.RepositoryContext(MechanicServicesSingleVehicleConnectionClass.GetConnectionName()))
 {
     Initialize(vehicle, dependencies);
 }