2010-09-29 6 views
1

J'ai une table d'alerte qui a un 1: beaucoup de mappage aux périphériques. Cette relation est transmise dans une table de mappage. Lorsque j'essaie de produire une jointure externe gauche à partir de la table de mappage vers les différentes tables de type d'actif, j'obtiens l'erreur suivante: System.Security.VerificationException: opération peut déstabiliser l'exécution.Erreur Linq sur la jointure externe gauche

var alertAssets = (from a in dc.MSAlert_Assets 
           from b in dc.MSRfids.Where(x => x.accountID == a.accountID && x.rfID == a.tagNum && x.custNum == a.custNum).DefaultIfEmpty() 
           from c in dc.MSDevices.Where(x => x.accountID == a.accountID && x.deviceID == a.deviceID).DefaultIfEmpty() 
           from d in dc.MSGroups.Where(x => x.accountID == a.accountID && x.groupID == a.groupID).DefaultIfEmpty() 
           let x = grrepo.getAssetsForGroupID(d.groupID, d.accountID) 
           where a.alertID == alertID 
           select new {... specific objects} 

je pensais que ce peut être un problème rétrécissement, donc j'Enumarated le IQueryable, mais toujours la même question.

+0

avez-vous essayé d'utiliser join au lieu de from et where clauses –

Répondre

0

La seule chose qui me saute aux yeux est la ligne

let x = grrepo.getAssetsForGroupID(d.groupID, d.accountID) 

Si d peut être nul (car il est se joindre à un externe gauche en raison de la DefaultIfEmpty), comment pouvez-vous accéder au d.groupID ou le d.accountID. Je pense que c'est là qu'il échoue car il ne peut pas obtenir les propriétés/variables de null.

Questions connexes