DeletedMetadataFilters Enumeration
Updated: November 29, 2016
Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
An enumeration that specifies the type of deleted metadata to retrieve.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)
| Member name | Description | |
|---|---|---|
| All | All deleted metadata. Value = 31. | |
| Attribute | Deleted Attribute metadata. Value = 2. | |
| Default | The value used if not set. Equals Entity | |
| Entity | Deleted Entity metadata. Value = 1. | |
| Label | Deleted Label metadata. Value = 8. | |
| OptionSet | Deleted OptionSet metadata. Value = 16. | |
| Relationship | Deleted Relationship metadata. Value = 4. |
The DeletedMetadataFilters enumeration can also be used as a key to access a subset of deleted metadata included in a DeletedMetadataCollection. The following code snippets show usage of DeletedMetadataFilters in Sample: Query metadata and detect changes.
protected RetrieveMetadataChangesResponse getMetadataChanges( EntityQueryExpression entityQueryExpression, String clientVersionStamp, DeletedMetadataFilters deletedMetadataFilter) { RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest() { Query = entityQueryExpression, ClientVersionStamp = clientVersionStamp, DeletedMetadataFilters = deletedMetadataFilter }; return (RetrieveMetadataChangesResponse)_service.Execute(retrieveMetadataChangesRequest); }
protected String updateOptionLabelList(EntityQueryExpression entityQueryExpression, String clientVersionStamp) { //Retrieve metadata changes and add them to the cache RetrieveMetadataChangesResponse updateResponse; try { updateResponse = getMetadataChanges(entityQueryExpression, clientVersionStamp, DeletedMetadataFilters.OptionSet); addOptionLabelsToCache(updateResponse.EntityMetadata, true); removeOptionLabelsFromCache(updateResponse.DeletedMetadata, true); } catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex) { // Check for ErrorCodes.ExpiredVersionStamp (0x80044352) // Will occur when the timestamp exceeds the Organization.ExpireSubscriptionsInDays value, which is 90 by default. if (ex.Detail.ErrorCode == unchecked((int)0x80044352)) { //reinitialize cache _optionLabelList.Clear(); updateResponse = getMetadataChanges(entityQueryExpression, null, DeletedMetadataFilters.OptionSet); //Add them to the cache and display the changes addOptionLabelsToCache(updateResponse.EntityMetadata, true); } else { throw ex; } } return updateResponse.ServerVersionStamp; }
protected void removeOptionLabelsFromCache(DeletedMetadataCollection DeletedMetadata, Boolean showChanges) { List<OptionSetOption> optionSetOptionsToRemove = new List<OptionSetOption>(); if (DeletedMetadata.Keys.Contains(DeletedMetadataFilters.OptionSet)) { DataCollection<Guid> optionsetmetadataids = (DataCollection<Guid>)DeletedMetadata[DeletedMetadataFilters.OptionSet]; foreach (Guid metadataid in optionsetmetadataids) { foreach (OptionSetOption oso in _optionLabelList) { if (metadataid == oso.optionsetId) { optionSetOptionsToRemove.Add(oso); } } } } foreach (OptionSetOption option in optionSetOptionsToRemove) { _optionLabelList.Remove(option); } if (showChanges) { if (optionSetOptionsToRemove.Count > 0) { Console.WriteLine("{0} Option Labels removed", optionSetOptionsToRemove.Count); Console.WriteLine("{0} Total Option Labels currently cached", _optionLabelList.Count); Console.WriteLine(""); } else { Console.WriteLine("No Option Labels removed."); Console.WriteLine(""); } } }
Microsoft Dynamics 365
© 2016 Microsoft. All rights reserved. Copyright