Partager via


Énumération DeletedMetadataFilters

S'applique à: CRM 2015 on-prem, CRM Online

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

Espace de noms: Microsoft.Xrm.Sdk.Metadata.Query
Assembly: Microsoft.Xrm.Sdk (dans Microsoft.Xrm.Sdk.dll)

Syntaxe

'Déclaration
<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

Membres

Nom du membre 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.

Remarques

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

 }
}

Plateformes

Plateformes de développement

Windows Vista, Windows Server 2003 et

Plateformes cibles

Windows 98,Windows 2000,Windows 2000 Server,Windows CE,Windows Server 2008,Windows 98 Deuxième Édition,Pocket PC,Smart Phone,Windows Server 2003,Windows XP Professionnel,Windows Vista,Windows XP

Change History

Voir aussi

Référence

Espace de noms Microsoft.Xrm.Sdk.Metadata.Query

Autres ressources

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

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