I previously asked une question sur les conditions de chaînage dans Linq To Entities. Maintenant, j'utilise LinqKit et tout fonctionne bien. Je veux voir le SQL généré et après avoir lu this answer, j'utilise LinqPad.SQL généré avec PredicateBuilder, LINQPad et opérateur ANY
C'est ma déclaration:
var predProduct = PredicateBuilder.True<Product>();
var predColorLanguage = PredicateBuilder.True<ColorLanguage>();
predProduct = predProduct.And(p => p.IsComplete);
predColorLanguage = predColorLanguage.And(c => c.IdColorEntity.Products.AsQueryable().Any(expr));
ColorLanguages.Where(predColorLanguage).Dump();
Le code fonctionne dans VS2008, compilez et produire le jeu de résultats corrects, mais LINQPad, j'ai l'erreur suivante:
NotSupportedException: The overload query operator 'Any' used is not Supported.
Comment Je vois le SQL généré si LINQPad échoue?
EDIT
Si j'écris
var predColorLanguage = PredicateBuilder.True<ColorLanguage>();
predColorLanguage = predColorLanguage.And(c => c.IdColorEntity.Products.Any((p => p.IsComplete));
ColorLanguages.Where(predColorLanguage).Dump();
œuvres ... WTF?
Le problème n'est pas dans Visual Studio, mais dans LinqPad. Dans Visual Studio, cela fonctionne sans problème. J'ai essayé votre solution sans succès. –
Utilisez-vous Entity Framework? Et si oui, choisissez-vous 'Custom EF Context' lors de la connexion dans LINQPad? Si vous vous connectez directement à une base de données dans LINQPad, vous utilisez LINQ to SQL, ce qui peut expliquer la différence. –