En utilisant les produits de la base de données AdventureWorks table comme exemple, j'ai créé un DBML et étendu les propriétés du DataContext pour inclure une nouvelle propriété:Exception LINQ: "Les requêtes avec des collections locales ne sont pas prises en charge." mais pas en utilisant une collection locale
partial class AdventureWorksDataContext { public IQueryable<Product> FinishedProducts { get { return Products.Where(p => p.FinishedGoodsFlag); } } }
La propriété des produits fait partie de la DataContext généré et tout ce que j'ai fait est d'ajouter un à partir de la table <produit> de sorte qu'il renvoie un IQueryable. Maintenant
, le problème vient en essayant de l'interroger comme celui-ci (par exemple muet, mais qui devrait montrer le problème):
var queryFinishedProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.FinishedProducts.Max(p => p.ProductID));
Itération ce résultat de la requête dans « Les requêtes avec des collections locales ne sont pas supporté "exception. Je ne comprends pas pourquoi il lancerait cette erreur quand il n'y a pas de collections locales utilisées. Si je le lance sur la table normale des produits (qui est un Table<Product>
):
var queryProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.Products.Max(p => p.ProductID));
... ça fonctionne très bien. La seule différence est que j'ai ajouté un Table<Product>
et l'a renvoyé comme IQueryable<Product>
.
Vous avez des idées?
Est-ce que FinishedProducts est une propriété? Où est le "get"? –
Oui, c'est une propriété. Désolé, je vais ajouter le get pour plus de clarté. – Mike
Il semblerait que le générateur SQL n'ait pas pu dire que le 'Products' utilisé dans la requête de FinishedProducts provenait du même' DataContext' que le reste de la requête. – Gabe