2017-08-23 2 views
0

Je suis confronté à un problème lors de l'exécution de la plupart de mes requêtes. Je peux générer une requête de lien avec une jointure à une seule entité associée à la fois. Mais lorsque j'exécute une requête LINQ avec plusieurs jointures comme dans l'exemple ci-dessous, l'erreur "Sequence contains no elements" apparaît. Je ne suis capable de "joindre" qu'une seule entité à la fois. D'autres exemples que j'ai vus permettent des jointures multiples, mais je n'ai pas réussi à faire fonctionner ceci.Dynamics 365 OrganisationServiceContext Requête Linq avec plusieurs jointures

Des suggestions?

+0

Une question factice - êtes-vous sûr que ce « devrait » retourner un résultat? Peut-être qu'aucun enregistrement ne correspond à cette requête? Je suggère de construire une requête FetchXML (en utilisant la recherche avancée) et de vérifier si elle renvoie une valeur que vous désirez. Aussi, vous devriez utiliser les noms de recherche comme dans la réponse d'Aron, ce serait beaucoup plus clair –

Répondre

1

Il semble que vous utilisiez les noms de relation plutôt que les noms de champ de recherche dans les jointures. En utilisant les noms de champs de recherche pourrait plutôt ressembler à ceci:

var query = (from permission in context.CreateQuery<ServiceModel.Types.idoe_permission>() 
     join contact in context.CreateQuery<ServiceModel.Types.Contact>() on permission.idoe_contactid.Id equals contact.Id 
     join corporation in context.CreateQuery<ServiceModel.Types.idoe_corporation>() on permission.idoe_corporationid.Id equals corporation.Id 
     join role in context.CreateQuery<ServiceModel.Types.idoe_role>() on permission.idoe_roleid.Id equals role.Id 
     where contact.idoe_ADB2CID == request.UserId 
     select new { Corporation = corporation, Role = role }).ToList() ;