public void CreateTransactions(ref TransactionChain chain)
        {
            foreach (DelayedMetadataAction action in QueuedActions)
            {
                switch (action.Action)
                {
                case TransactionActionType.Deleted:
                    // As this is metadata that hasn't yet been created, we don't need to delete it, we just do nothing with it.
                    return;

                case TransactionActionType.Updated:
                {
                    UpdateMetadataTransactionLink updateMetadataTransaction = CreateMetadataUpdateTransaction(action);

                    if (updateMetadataTransaction != null)
                    {
                        chain.AddTransaction(updateMetadataTransaction);
                    }
                    break;
                }

                default:
                    break;
                }
            }
        }
        private UpdateMetadataTransactionLink CreateMetadataUpdateTransaction(DelayedMetadataAction action)
        {
            UpdateMetadataTransactionLink updateMetadataTransaction = null;

            if (MetadataContext.Facade != null && MetadataContext.Facade.IsConcrete)
            {
                updateMetadataTransaction            = new UpdateMetadataTransactionLink();
                updateMetadataTransaction.DomainId   = action.DomainId;
                updateMetadataTransaction.MapManager = MetadataContext.MapManager;
                updateMetadataTransaction.Metadata   = MetadataContext.Facade;
                updateMetadataTransaction.Name       = action.Name;
                updateMetadataTransaction.Value      = action.Value;
            }

            return(updateMetadataTransaction);
        }