es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recuperar la relación N:N del Plugin C# de Dynamics CRM/Dataverse.

Tengo un problema que no puedo resolver por mí mismo. Tengo múltiples situaciones en las que necesito recuperar datos N:N con solo el ID de un lado de la relación.

Ejemplo: Necesito encontrar a todos los Cursistas de una Opleiding que es una relación N:N. Tengo el ID de la Opleiding, ¿cómo puedo hacer esta consulta?

Intenté lo siguiente:
En este ejemplo:
cursist = Trainee
opleiding = Training

if (context.MessageName == "Update" && context.Stage == 20)
    {
        targetEntity = context.InputParameters["Target"] as Entity;

        List<guid> cursistID = new List<guid>();
        QueryExpression query = new QueryExpression("cref8_cursist");
        query.ColumnSet = new ColumnSet(new string[] { "cref8_cursistid" });

        LinkEntity linkEntity1 = new LinkEntity("cref8_cursist", "cref8_Opleiding_cref8_Cursist_cref8_Cursi", "cref8_cursistid", "cref8_cursistid", JoinOperator.Inner);
        LinkEntity linkEntity2 = new LinkEntity("cref8_Opleiding_cref8_Cursist_cref8_Cursi", "cref8_opleiding", "cref8_opleidingid", "cref8_opleidingid", JoinOperator.Inner);

        linkEntity1.LinkEntities.Add(linkEntity2);
        query.LinkEntities.Add(linkEntity1);

        linkEntity2.LinkCriteria = new FilterExpression();
        linkEntity2.LinkCriteria.AddCondition(new ConditionExpression("cref8_opleidingid", ConditionOperator.Equal, targetEntity.Id));

        EntityCollection cursistCollection = service.RetrieveMultiple(query);
        if (cursistCollection.Entities.Count > 0)
        {
            foreach (var cursist in cursistCollection.Entities)
            {
                //HAGA ALGUNA LÓGICA
            }
        }

    }

Esto resulta en el siguiente error:
‘No se encontró la entidad con nombre = ‘cref8Opleidingcref8Cursistcref8_Cursi’ con el mapeo de nombre = ‘Logical’ en la MetadataCache.

Saludos cordiales, Anthony

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para recuperar datos N:N con solo el ID de un lado de la relación, puedes utilizar el objeto LinkEntity para unir las entidades relacionadas. En el ejemplo de código proporcionado, ocurre un error porque el nombre de la entidad de intersección (cref8_Opleiding_cref8_Cursist_cref8_Cursi) es incorrecto.

    Para solucionar este error, asegúrate de que el nombre de la entidad de intersección es correcto y se escribe exactamente igual que en el modelo de entidad de CRM. Puedes verificar el nombre de la entidad de intersección abriendo la relación N:N en el área de personalizaciones de CRM y comprobando el nombre de la entidad de intersección en los detalles de la relación. Una vez corregido el nombre, la consulta debería poder recuperar los datos deseados.

Comments are closed.