Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Catégorie : Performance, utilisation
Potentiel d’impact : Élevé
Symptômes
La récupération de métadonnées non publiées peut entraîner :
- Des performances plus lentes
- La confusion des utilisateurs
Conseils
Il n’est pas courant de récupérer des personnalisations non publiées et, dans de rares cas, vous devrez récupérer ces personnalisations.
Par exemple, lorsque vous devez extraire des personnalisations non publiées pour créer une application afin de modifier des métadonnées personnalisables. Si vous souhaitez créer un éditeur de métadonnées personnalisées, vous devez récupérer toutes les définitions non publiées de ces éléments. Si un développeur définit certaines modifications, mais ne les publie pas, votre application doit pouvoir les récupérer pour s’assurer que le développeur récupère les personnalisations développées les plus récentes. Dans le cas contraire, cela peut entraîner la perte des personnalisations non publiées.
Toutefois, si vous ne créez pas d’éditeur ou si vous n’avez pas explicitement besoin de récupérer des définitions non publiées, récupérez uniquement les définitions publiées. Les exemples suivants expliquent comment récupérer des personnalisations publiées :
Comportement par défaut
Par défaut, la récupération des métadonnées obtient uniquement les personnalisations publiées.
public RetrieveAllEntitiesAttributesResponse GetAllEntitiesImplicit(IOrganizationService service)
{
var request = new RetrieveAllEntitiesRequest();
request.EntityFilters = EntityFilters.Attributes;
return service.Execute(request) as RetrieveAllEntitiesAttributesResponse;
}
Contrôle explicite du comportement
Définition explicite de la propriété RetrieveAsIfPublished pour récupérer uniquement les personnalisations publiées
public RetrieveAllEntitiesAttributesResponse GetAllEntitiesExplicit(IOrganizationService service)
{
var request = new RetrieveAllEntitiesRequest()
{
RetrieveAsIfPublished = false
EntityFilters = EntityFilters.Attributes
};
return service.Execute(request) as RetrieveAllEntitiesAttributesResponse;
}
Schémas problématiques
Les opérations suivantes permettent de récupérer les métadonnées non publiées via le paramètre RetrieveAsIfPublished :
- RetrieveAllEntitiesRequest
- RetrieveAllOptionSetsRequest
- RetrieveAttributeRequest
- RetrieveEntityRequest
- RetrieveOptionSetRequest
- RetrieveRelationshipRequest
- RetrieveEntityKeyRequest
Exemples de récupération des personnalisations non publiées ci-dessous :
Avertissement
Ces scénarios doivent être évités.
public RetrieveEntityKeyResponse GetEntityKey(IOrganizationService service, string entityName, string keyName)
{
var request = new RetrieveEntityKeyRequest()
{
EntityLogicalName = entityName,
LogicalName = keyName,
RetrieveAsIfPublished = true
};
return service.Execute(request) as RetrieveEntityKeyResponse;
}
public RetrieveRelationshipResponse GetRelationship(IOrganizationService service, Guid id)
{
var request = new RetrieveRelationshipRequest()
{
MetadataId = id,
RetrieveAsIfPublished = true
};
return service.Execute(request) as RetrieveRelationshipResponse;
}
public RetrieveEntityAttributesResponse GetEntity(IOrganizationService service, Guid id)
{
var request = new RetrieveEntityRequest()
{
MetadataId = id,
RetrieveAsIfPublished = true,
EntityFilters = EntityFilters.Attributes
};
return service.Execute(request) as RetrieveEntityAttributesResponse;
}
Fonctions de l’API web
Cette instruction s’applique aux fonctions de l’API web suivantes également :
Informations supplémentaires
Le service Dynamics 365 vous permet de récupérer certaines métadonnées publiées ou non publiées. Depuis Dynamics CRM 2011, les métadonnées publiées ont renvoyées, par défaut, du cache des métadonnées de la mémoire de l’application sauf si le développeur attribue explicitement à la propriété RetrieveAsIfPublished la valeur true.
La récupération des métadonnées non publiées non seulement ajoute une surcharge au traitement de la requête proprement dit, avec un temps d’exécution plus lent, mais peut aussi retourner des métadonnées non attendues par le demandeur. Par exemple, la récupération des métadonnées du groupe d’options non publiées pourrait renvoyer une valeur d’étiquette non visible dans l’interface utilisateur, entraînant une confusion pour l’utilisateur final.
Voir aussi
Propriété RetrieveEntityRequest.RetrieveAsIfPublished
Utiliser les métadonnées à l’aide du SDK pour .NET
Utiliser l’API Web avec les métadonnées
Publier les personnalisations