protected IEnumerable <ExecuteCommand <T> > GetDeleteAggregationCommands(IEnumerable <T> children, XElement childEntitySchema, ManyToManyRelationship manyToManyRelationship,
                                                                                 Dictionary <string, object> parentPropertyValues, string childrenPath, string parentEntity, XElement schema)
        {
            DeleteAggregation <T> deleteAggregation = CreateDeleteAggregation(default(T), parentEntity, schema);

            deleteAggregation.Split(children, childEntitySchema, manyToManyRelationship, parentPropertyValues, childrenPath);

            // reverse back
            return(deleteAggregation.ExecuteCommands.Reverse());
        }
        protected void Delete(T aggreg, XElement entitySchema, DirectRelationship parentRelationship, Dictionary <string, object> parentPropertyValues, string path, string entity, XElement schema)
        {
            DeleteAggregation <T> deleteAggregation = CreateDeleteAggregation(default(T), entity, schema);

            deleteAggregation.Split(aggreg, entitySchema, parentRelationship, parentPropertyValues, path);

            // reverse back
            IEnumerable <ExecuteCommand <T> > executeCommands = deleteAggregation.ExecuteCommands.Reverse();

            DeleteCommands.AddRange(executeCommands);
        }