Делите путем


DeletedMetadataFilters Enumeration

 

Applies To: Dynamics CRM 2015

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

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

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

Syntax

[FlagsAttribute]
[DataContractAttribute(Name = "DeletedMetadataFilters", Namespace = "https://schemas.microsoft.com/xrm/2011/Metadata/Query")]
public enum DeletedMetadataFilters
[FlagsAttribute]
[DataContractAttribute(Name = "DeletedMetadataFilters", Namespace = "https://schemas.microsoft.com/xrm/2011/Metadata/Query")]
public enum class DeletedMetadataFilters
[<FlagsAttribute>]
[<DataContractAttribute(Name = "DeletedMetadataFilters", Namespace = "https://schemas.microsoft.com/xrm/2011/Metadata/Query")>]
type DeletedMetadataFilters
<FlagsAttribute>
<DataContractAttribute(Name := "DeletedMetadataFilters", Namespace := "https://schemas.microsoft.com/xrm/2011/Metadata/Query")>
Public Enumeration 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("");
  }

 }
}

See Also

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

Return to top

© 2016 Microsoft. All rights reserved. Copyright