Поделиться через


DeletedMetadataCollection Class

 

Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

The structure used to return deleted metadata.

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

Inheritance Hierarchy

System.Object
  Microsoft.Xrm.Sdk.DataCollection<TKey, TValue>
    Microsoft.Xrm.Sdk.Metadata.Query.DeletedMetadataCollection

Syntax

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

Constructors

Name Description
System_CAPS_pubmethod DeletedMetadataCollection()

Initializes a new instance of the DeletedMetadataCollection class.

Properties

Name Description
System_CAPS_pubproperty Count

Gets the number of elements in the collection.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubproperty IsReadOnly

Gets a value indicating whether the DataCollection<TKey, TValue> is read-only.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubproperty Item[TKey]

Gets or sets the value associated with the specified key.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubproperty Keys

Gets a collection containing the keys in the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubproperty Values

Gets a collection containing the values in the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

Methods

Name Description
System_CAPS_pubmethod Add(TKey, TValue)

Adds the specified key and value to the dictionary.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Add(KeyValuePair<TKey, TValue>)

Adds the specified key and value to the dictionary.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod AddRange(IEnumerable<KeyValuePair<TKey, TValue>>)

Adds the elements of the specified collection to the end of the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod AddRange(KeyValuePair<TKey, TValue>[])

Adds the elements of the specified collection to the end of the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Clear()

Removes all items from the DataCollection<TKey, TValue>. (Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Contains(TKey)

Determines whether the DataCollection<TKey, TValue> contains a specific value.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Contains(TKey)

Determines whether the DataCollection<TKey, TValue> contains a specific value.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod ContainsKey(TKey)

Determines whether the DataCollection<TKey, TValue> contains a specific key value.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod CopyTo(KeyValuePair<TKey, TValue>[], Int32)

(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Equals(Object)

(Inherited from Object.)

System_CAPS_pubmethod GetEnumerator()

Returns an enumerator that iterates through a collection.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod GetHashCode()

(Inherited from Object.)

System_CAPS_pubmethod GetType()

(Inherited from Object.)

System_CAPS_pubmethod Remove(TKey)

Removes the first occurrence of a specific object from the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod Remove(TKey)

Removes the first occurrence of a specific object from the DataCollection<TKey, TValue>.(Inherited from DataCollection<TKey, TValue>.)

System_CAPS_pubmethod ToString()

(Inherited from Object.)

System_CAPS_pubmethod TryGetValue(TKey, TValue)

Gets the value associated with the specified key.(Inherited from DataCollection<TKey, TValue>.)

Explicit Interface Implementations

Name Description
System_CAPS_pubinterfaceSystem_CAPS_privmethod IEnumerable.GetEnumerator()

Returns an enumerator that iterates through the collection.(Inherited from DataCollection<TKey, TValue>.)

Remarks

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

 }
}

Thread Safety

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Microsoft.Xrm.Sdk.Metadata.Query Namespace
Retrieve and detect changes to metadata
Retrieve information about deleted metadata
Sample: Query metadata and detect changes

Return to top

Microsoft Dynamics 365

© 2016 Microsoft. All rights reserved. Copyright