DeletedMetadataCollection Class
[Applies to: Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online]
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)
The structure used to return deleted metadata. Namespace: Microsoft.Xrm.Sdk.Metadata.Query
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)
This is the collection returned as the RetrieveMetadataChangesResponse.DeletedMetadata property when the RetrieveMetadataChangesRequest has values set for the ClientVersionStamp and DeletedMetadataFilters properties.
The following code snippets taken from Sample: Query Metadata and Detect Changes show how the DeletedMetadataCollectioncan be used to detect deleted OptionSetMetadata.
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(""); } } }
System.Object
Microsoft.Xrm.Sdk.DataCollection
Microsoft.Xrm.Sdk.Metadata.Query.DeletedMetadataCollection
Microsoft.Xrm.Sdk.DataCollection
Microsoft.Xrm.Sdk.Metadata.Query.DeletedMetadataCollection
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Development Platforms
Windows Server 2008Target Platforms
Windows 98,Windows 2000,Windows 2000 Server,Windows CE,Windows Server 2008,Windows 98 Second Edition,Pocket PC,Smart Phone,Windows Server 2003,Windows XP Professional,Windows Server 2008, Windows 7 (All Versions), Windows Vista (All Versions)Send comments about this topic to Microsoft.
© 2011 Microsoft Corporation. All rights reserved.