Maison > base de données > tutoriel mysql > Pourquoi LINQ to SQL génère-t-il une erreur « Restriction d'utilisation de la séquence locale » lors de la jonction avec des collections locales ?

Pourquoi LINQ to SQL génère-t-il une erreur « Restriction d'utilisation de la séquence locale » lors de la jonction avec des collections locales ?

Linda Hamilton
Libérer: 2024-12-27 21:36:15
original
583 Les gens l'ont consulté

Why Does LINQ to SQL Throw a

Erreur LINQ to SQL : restriction d'utilisation des séquences locales

Dans LINQ to SQL, les opérateurs de requête ne peuvent pas utiliser de séquences locales, à l'exception de Contains() opérateur. Cette erreur se produit souvent lorsque vous tentez d'effectuer des jointures entre des sources SQL et des sources locales.

L'extrait de code fourni montre une jointure entre la table Shop.Sections et une collection locale, obj.SectionObjects. Cependant, cette opération n'est pas valide, ce qui entraîne l'erreur : "La séquence locale ne peut pas être utilisée dans l'implémentation LINQ to SQL des opérateurs de requête, à l'exception de l'opérateur Contains()."

Solution : récupération de données avant la jointure

Pour résoudre cette erreur, récupérez les données SQL en mémoire avant de tenter la jointure. Dans ce scénario, nous n'effectuons pas une véritable jointure mais plutôt une requête "select...where...selectid in". Ceci peut être réalisé en utilisant la méthode Contains() :

var SE = Shop.Sections
            .Where(s => obj.SectionObjects
                           .Select(so => so.SectionId)
                           .Contains(s.SectionId))
            .ToList();
Copier après la connexion

Cette requête se traduit par :

select * from Sections where sectionId in (...)
Copier après la connexion

où la liste des ID dans la clause in est dérivée de la collection d'objets locale. . Cette approche garantit que toutes les données utilisées dans la requête font partie de la source SQL, résolvant ainsi l'erreur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal