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); }
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)); }