Condividi tramite


Classe DeletedMetadataCollection

Si applica a: CRM 2015 on-prem, CRM Online

The structure used to return deleted metadata.

Spazio dei nomi: Microsoft.Xrm.Sdk.Metadata.Query
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)

Sintassi

'Dichiarazione
<CollectionDataContractAttribute(Name:="DeletedMetadataCollection", Namespace:="https://schemas.microsoft.com/xrm/2011/Metadata/Query")> _
Public NotInheritable Class DeletedMetadataCollection
    Inherits DataCollection(Of DeletedMetadataFilters, DataCollection(Of Guid))
[CollectionDataContractAttribute(Name="DeletedMetadataCollection", Namespace="https://schemas.microsoft.com/xrm/2011/Metadata/Query")] 
public sealed class DeletedMetadataCollection : DataCollection<DeletedMetadataFilters,DataCollection<Guid>>

Note

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

 }
}

Gerarchia ereditarietà

System.Object
   Microsoft.Xrm.Sdk.DataCollection
    Microsoft.Xrm.Sdk.Metadata.Query.DeletedMetadataCollection

Thread Safety

Tutti i membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è garantito che i membri di istanza siano thread-safe.

Piattaforme

Piattaforme di sviluppo

Windows Vista, Windows Server 2003 e

Piattaforme di destinazione

Windows 98,Windows 2000,Windows 2000 Server,Windows CE,Windows Server 2008,Windows 98 Second Edition,Pocket PC,Smartphone,Windows Server 2003,Windows XP Professional,Windows Vista,Windows XP

Change History

Vedere anche

Riferimento

Membri DeletedMetadataCollection
Spazio dei nomi Microsoft.Xrm.Sdk.Metadata.Query
Retrieve Information about Deleted Metadata

Altre risorse

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.