J'utilise LINQ avec un service Web ODataSystem.NotSupportedException: Ne peut projeter le dernier type d'entité dans la requête en cours de traduction
from tp in TyrePatterns
from t in tp.Tyres
where t.Diameter == 195
select tp
semble assez simple, non? Les pneus sont une propriété de TyrePatterns. Donc, juste pour être sûr que vous pouvez voir ce que je veux faire, ce que je fais dans le monde magique de SQL ressemblerait à quelque chose comme:
SELECT DISTINCT TyrePatterns.Name
FROM TyrePatterns
INNER JOIN Tyres ON Tyres.TyreID = TyrePatterns.TyreID
WHERE Tyres.Diameter = 195
Sur notre site, et LINQPad, le code LINQ donne la erreur d'exécution:
System.NotSupportedException: Can only project the last entity type in the query being translated.
aperçu de ce que cette erreur signifie réellement et une solution serait génial.
J'ai eu cette idée mais malheureusement ce n'est pas ce dont j'ai besoin. Je veux une colonne de la table TyrePatterns (TyrePattern.Name). Il y a une relation de un à plusieurs entre TyrePatterns et Tyres (beaucoup de pneus par TyrePattern). En sélectionnant Pneus et non TyrePatterns, j'obtiens des résultats en double, car je ne peux pas faire de Distinct, car l'utilisation de Distinct donne une erreur d'exécution différente. – Zac
Vous pourriez faire distinct sur le client (il téléchargerait un peu plus). Pour l'exécuter sur le client, ajoutez simplement .AsEnumerable() après tout ce qui devrait fonctionner sur le serveur. Tout ce qui suit AsEnumerable() sera exécuté localement sur le client (où Distinct est définitivement supporté). –
Merci pour la réponse, je voudrais pouvoir le marquer comme utile! Comme une solution, cela semble toujours insatisfaisant cependant; cela peut signifier tirer beaucoup de données redondantes (quelques ordres de grandeur plus). J'ai aussi essayé de former un groupe pour se débarrasser des doublons, mais cela a aussi donné une exception non soutenue. – Zac