9
votes

Erreur, méthode non prise en charge par Linq vers des entités

Pourquoi je reçois cette erreur:

la méthode "célibataire" n'est pas prise en charge par Linq aux entités. Envisagez d'utiliser la méthode «d'abord» à la place. xxx

Compiler sa sécurité, mais ne casse que si l'appel est effectué à la section respective. Je suis nouveau à Linq, ne sais donc pas quelles méthodes sont pour Linqtosql ou LinqtOentivements. Cela signifie plus d'erreurs! Nous ne pouvons pas nous souvenir de toutes les méthodes de cette façon.

Ma question est que, s'il existe des limitations aux méthodes applicables à certains types / scénarios, pourquoi apparaissent-ils dans IntelliSense?

Edit: Tout travail / technique utile pour avoir une idée si on est pris en charge?


0 commentaires

3 Réponses :


6
votes

Dans le cas de LinqtosQL / entités, les requêtes sont toutes divisées dans des arbres d'expression qui sont ensuite transmis aux API du fournisseur. Les fournisseurs ne peuvent pas fournir des informations de temps de compilation sur les arbres qu'ils ne prennent pas en charge, car il n'y a pas de différence syntaxique. Le seul choix est pour eux de fournir des données d'exécution.

Par exemple, une fois sous forme d'arborescence d'expression, le seul et d'abord apparaissent sous la forme d'une instance méthodalxalx expression .


2 commentaires

Une idée de savoir comment savoir ou simplement "pratiquer rendre l'homme parfait"?


@Asad, de nombreux fournisseurs ont une liste des appels qu'ils appuient dans leur documentation mais n'interrèrent que c'est essai et erreurs :(



6
votes

Microsoft a une complète Liste des méthodes prises en charge et non prises en charge à Linq aux entités. C'est là où aller pour découvrir ces informations.

Vous remarquerez que les méthodes SIME SIME et SIEMODEFAULT sont répertoriées comme "non prises en charge" dans la section sur les méthodes de pagination.

Comme Jared a souligné, le compilateur ne sait pas lors de la compilation du fournisseur que vous utilisez, il n'a donc aucun moyen d'appliquer la sécurité du temps de compilation des méthodes de vulgarisation que le fournisseur peut ou non implémenter. Vous devrez plutôt compter sur la documentation.


1 commentaires

Correct (+1) pour EF 1. Notez cependant que les deux méthodes sont prises en charge dans EF 4.



-1
votes

Malheureusement, c'est une autre indication du r Immaturité élative de EF et le MisMatch d'impédance relationnelle d'objet .

Documentation est votre ami si vous choisissez d'aller cette route .


0 commentaires