je reçois l'erreur suivante lorsque vous essayez de joindre un tableau à la requête Linq à EFRejoignez tableau à EF requête
Une erreur est survenue lors de l'exécution de la définition de la commande. Voir l'exception interne pour plus de détails. Une partie de votre instruction SQL est imbriquée trop profondément. Réécrivez la requête ou divisez-la en plus petites requêtes.
Le code est le suivant:
var vids = new List<string>();
using (var ctx = new MyDbContext())
{
var qry = ctx.Pickups.Where(p => p.UserName == User.Identity.Name);
if (someBoolean)
{
var v = GetVids(); // get the list of Ids from a web service
vids.AddRange(v);
}
if (vids.Count() > 0)
{
qry = qry.Join(vids, p => p.VId, v => v, (v, p) => p);
}
var data = qry
.Select(p => new
{
// etc.
});
}
Le problème est que le service Web est pas associé à la DB J'utilise EF avec, sinon, je venais de faire la jonction contre la tables dans la base de données. Le nombre d'ID que je reçois du service Web pourrait être supérieur à une centaine (généralement 5-10). Si je commente la jointure, le code fonctionne bien, donc je sais que l'erreur est dans la jointure. Avec seulement quelques ID (jusqu'à environ 30) dans vids, la jointure fonctionne parfaitement.
Que recommandez-vous pour remédier à ce problème? La seule chose à laquelle je pouvais penser était d'insérer la liste des ID dans la base de données et de faire la jointure de cette façon. Cela ne me semble pas trop attirant.
Je pense que le problème n'est pas avec les parties du code que vous avez fourni –