DeletedMetadataFilters Enumeration

Applies To: Microsoft Dynamics CRM 2013, Microsoft Dynamics CRM Online

An enumeration that specifies the type of deleted metadata to retrieve.

Namespace: Microsoft.Xrm.Sdk.Metadata.Query
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)

Syntax

'Declaration
<FlagsAttribute> _
<DataContractAttribute(Name:="DeletedMetadataFilters", Namespace:="https://schemas.microsoft.com/xrm/2011/Metadata/Query")> _
Public Enumeration DeletedMetadataFilters
[FlagsAttribute] 
[DataContractAttribute(Name="DeletedMetadataFilters", Namespace="https://schemas.microsoft.com/xrm/2011/Metadata/Query")] 
public enum DeletedMetadataFilters

Members

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.

Remarks

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

 }
}

Platforms

Development Platforms

Windows Server 2008, Windows Server 2012, Windows 7 (All Versions), Windows 8 (All Versions)

Target 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 Server 2012, ,Windows 7 (All Versions), ,Windows 8 (All Versions)

Change History

See Also

Reference

Microsoft.Xrm.Sdk.Metadata.Query Namespace

Other Resources

Query and Capture Changes to Metadata
Sample: Query Metadata and Detect Changes

Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.