Saltar al contenido
← Todas las píldoras

Cómo obtener el campo principal (nombre) de cualquier tabla de Dataverse

En cuanto haces código genérico, como un plugin que sirve para varias tablas o una herramienta, necesitas saber cuál es el campo principal de cada una. En cuentas es name, en contactos fullname, en casos title. En vez de ponerlo a mano, yo se lo pido a los metadatos.

En C# basta con un RetrieveEntityRequest:

public static string GetPrimaryNameAttribute(IOrganizationService service, string logicalName)
{
    var response = (RetrieveEntityResponse)service.Execute(new RetrieveEntityRequest
    {
        LogicalName = logicalName,
        EntityFilters = EntityFilters.Entity, // solo la tabla, sin columnas: mucho más rápido
    });
 
    return response.EntityMetadata.PrimaryNameAttribute; // PrimaryIdAttribute para el id
}

Y con la Web API es una sola petición:

GET /api/data/v9.2/EntityDefinitions(LogicalName='account')?$select=PrimaryNameAttribute,PrimaryIdAttribute

Como los metadatos casi nunca cambian, no tiene sentido pedirlos dentro de un bucle. Si lo vas a usar mucho, guarda el resultado en una variable estática o en una caché.

Compartir:LinkedInX

¿Te ha servido?

Si necesitas ayuda con esto en tu proyecto, escríbeme.

Más píldoras