private void Remove(OrganizationServiceCacheBatchedPluginMessage messages)
        {
            var batchedMessages             = messages.BatchedPluginMessage;
            List <EntityReference> entities = new List <EntityReference>();

            if (batchedMessages.Count > 0)
            {
                base.Remove(batchedMessages[0]);
            }

            foreach (var message in batchedMessages)
            {
                if (message.Target != null && message.Relationship == null)
                {
                    var entity = message.Target.ToEntityReference();
                    entities.Add(entity);
                }
                if (message.Target != null && message.Relationship != null && message.RelatedEntities != null)
                {
                    var target          = message.Target.ToEntityReference();
                    var relationship    = message.Relationship.ToRelationship();
                    var relatedEntities = message.RelatedEntities.ToEntityReferenceCollection();

                    if (message.MessageName == "Associate")
                    {
                        Associate(target, relationship, relatedEntities);
                    }

                    if (message.MessageName == "Disassociate")
                    {
                        Disassociate(target, relationship, relatedEntities);
                    }
                }

                if (message.Category != null && message.Category.Value.HasFlag(CacheItemCategory.Content))
                {
                    var contentMapProvider = GetContentMapProvider();

                    if (contentMapProvider != null)
                    {
                        contentMapProvider.Clear();
                    }
                }
            }
            Refresh(entities);
        }
Пример #2
0
        private void InvalidateCache(List <OrganizationServiceCachePluginMessage> batchedPluginMessage)
        {
            //Set Properties
            var cacheMessage = new OrganizationServiceCacheBatchedPluginMessage();

            cacheMessage.MessageName          = batchedPluginMessage[0].MessageName;
            cacheMessage.RelatedEntities      = batchedPluginMessage[0].RelatedEntities;
            cacheMessage.Relationship         = batchedPluginMessage[0].Relationship;
            cacheMessage.Target               = batchedPluginMessage[0].Target;
            cacheMessage.BatchedPluginMessage = batchedPluginMessage;

            var messageName = batchedPluginMessage[0].Target != null
                                ? batchedPluginMessage[0].Target.LogicalName
                                : batchedPluginMessage[0].MessageName;

            ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format("Posting Batch Cache Invalidation Request for {0}  with Count {1} ", messageName, batchedPluginMessage.Count));

            retryPolicy.Value.ExecuteAction(() => CacheInvalidation.ProcessMessage(cacheMessage));
        }