Mysql
 sql >> Base de données >  >> RDS >> Mysql

Colonne inconnue 'Project2.Name' dans 'clause where'

Laisse voir. Vous avez une requête LINQ to Entities parfaitement valide, elle fonctionne avec le fournisseur SqlServer et ne fonctionne pas avec le fournisseur MySQL. Cela ressemble à un bogue du fournisseur MySQL pour moi, qu'est-ce que cela pourrait être d'autre? Mais lequel? Je ne vois pas en quoi cela aide, mais misez sur #78610 (initié par migration ASP MVC MsSql vers MySQL SO post), marqué comme doublon de #76663 . Ou #77543 etc.

Le connecteur MySQL a donc des problèmes avec OrderBy dans les sous-requêtes. Comme solution de contournement, je pourrais suggérer (si possible) la manière alternative d'implémenter MaxBy , c'est-à-dire (en pseudo-code) au lieu de seq.OrderByDescending(col).FirstOrDefault() utilisez le seq.FirstOrDefault(col == seq.Max(col)) modèle qui fonctionne :

var Result = ctx.Items
    .Where(x => x.Contact.Country == Country)
    .GroupBy(p => p.Name)
    .Where(g => !g.Any(x => x.Value == "X"))
    .Select(g => g.FirstOrDefault(e => e.Date == g.Max(e1 => e1.Date)))
    .ToList();