public void ExecuteTransaction(IDbConnectionAbstraction connectionAbstraction, MapTransactionWrapper transactionWrapper, ref MapResponse response) { IMapTransaction transaction = (IMapTransaction)transactionWrapper; SqlCommand command = SelectDeleteNodeRelationshipsDescriptorsMetadataCommand(connectionAbstraction.Connection, transactionWrapper.NodeParameter.Value); connectionAbstraction.Open(); SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { Node deletedNode = new Node(); deletedNode.LoadElement(reader); response.Changes.Add(new MapChange(transaction.TransactionId, transactionWrapper.ResponseParameter.Id, deletedNode, TransactionType.DeleteNode)); if (reader.NextResult()) { while (reader.Read()) { Metadata deletedMetadata = new Metadata(); deletedMetadata.LoadElement(reader); response.Changes.Add(new MapChange(transaction.TransactionId, transactionWrapper.ResponseParameter.Id, deletedMetadata, TransactionType.DeleteMetadata)); } } if (reader.NextResult()) { while (reader.Read()) { Relationship deletedRelationship = new Relationship(); deletedRelationship.LoadElement(reader); response.Changes.Add(new MapChange(transaction.TransactionId, transactionWrapper.ResponseParameter.Id, deletedRelationship, TransactionType.DeleteRelationship)); } } transactionWrapper.ResponseParameter.Value = deletedNode.NodeUid; } connectionAbstraction.Close(); }