Recuperar metadatos publicados
Categoría: rendimiento, uso
Potencial de impacto: alto
Síntomas
Recuperar metadatos no publicados podría causar:
- Rendimiento más lento
- Confusión para los usuarios
Instrucciones
No es común recuperar personalizaciones sin publicar y en raras ocasiones tendrá necesidad de recuperar esas personalizaciones.
Un ejemplo donde necesitaría recuperar personalizaciones sin publicar es si desea crear una aplicación para editar metadatos personalizables. Por ejemplo, si fuera a crear un editor de metadatos personalizables, debe recuperar cualquier definición sin publicar de esos elementos. Si un desarrollador define algunos cambios pero no los publica, la aplicación debe poder recuperarlos para asegurarse de que el programador está recuperando las personalizaciones desarrolladas más recientemente. Si no es así, podría resultar en la pérdida de personalizaciones sin publicar.
Sin embargo, si no está creando un editor o no tiene una necesidad explícita de recuperar definiciones sin publicar, entonces recupere solo las que están publicadas. Los ejemplos siguientes muestran cómo recuperar personalizaciones publicadas:
Comportamiento predeterminado
De forma predeterminada, la recuperación de metadatos solo obtendrá personalizaciones publicadas
public RetrieveAllEntitiesAttributesResponse GetAllEntitiesImplicit(IOrganizationService service)
{
var request = new RetrieveAllEntitiesRequest();
request.EntityFilters = EntityFilters.Attributes;
return service.Execute(request) as RetrieveAllEntitiesAttributesResponse;
}
Controlar el comportamiento explícitamente
Se establece de forma explícita la propiedad RetrieveAsIfPublished para recuperar solo personalizaciones publicadas
public RetrieveAllEntitiesAttributesResponse GetAllEntitiesExplicit(IOrganizationService service)
{
var request = new RetrieveAllEntitiesRequest()
{
RetrieveAsIfPublished = false
EntityFilters = EntityFilters.Attributes
};
return service.Execute(request) as RetrieveAllEntitiesAttributesResponse;
}
Patrones problemáticos
Las siguientes operaciones permiten recuperar metadatos no publicados con el parámetro RetrieveAsIfPublished:
- RetrieveAllEntitiesRequest
- RetrieveAllOptionSetsRequest
- RetrieveAttributeRequest
- RetrieveEntityRequest
- RetrieveOptionSetRequest
- RetrieveRelationshipRequest
- RetrieveEntityKeyRequest
Los ejemplos de recuperación de personalizaciones sin publicar se documentan a continuación:
Advertencia
Estos escenarios deben evitarse.
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;
}
Funciones de la API web
Estas instrucciones también se aplican a las siguientes funciones de la API web:
Información adicional
El servicio de Dynamics 365 permite recuperar determinados metadatos que estén publicados o sin publicar. Desde Dynamics CRM 2011, los metadatos publicados se devuelven, de forma predeterminada, desde la memoria caché de los metadatos en la aplicación a menos que el programador establezca de forma predeterminada el valor de la propiedad RetrieveAsIfPublished en true.
La recuperación de metadatos no publicados no solo agregará sobrecarga al procesamiento de la solicitud, con un rendimiento inferior, pero también puede devolver metadatos que no espera el solicitante. Por ejemplo, recuperar los metadatos del conjunto de opciones sin publicar devolvería un valor de etiqueta que no está visible en la interfaz de usuario, por lo que sería confuso para el usuario final.
Vea también
RetrieveEntityRequest.RetrieveAsIfPublished Property
Trabajar con metadatos usando el servicio de la organización
Usar la API web con metadatos
Publica personalizaciones
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).
Comentarios
Enviar e ver os comentarios