3

j'ai lu lors de l'utilisation LINQ à ENTITES une requête est de type IQueryable avant qu'elle ne soit traitée, mais lorsque la requête a été traitée, il est plus un IQueryable, mais un ObjectQuery.De retour IQueryable contre ObjectQuery lors de l'utilisation LINQ aux entités

Dans ce cas, est-il correct d'écrire des méthodes à partir de ma couche (couche de référentiel) pour retourner IQueryable?

Ai-je besoin de lancer? Pourquoi voudrais-je retourner un ObjectQuery?

Je viens d'un contexte LINQ à SQL où les choses étaient toujours IQueryable mais EF semble avoir changé cela.

Toute aide vraiment appréciée.

Répondre

9

Mes référentiels renvoient toujours IQueryable. La raison en est que IQueryable ne dépend pas de EF alors que ObjectQuery l'est. Donc, si je veux que mes autres couches soient ignorantes de la persistance, je ne veux pas introduire de dépendance sur ObjectQuery.

ObjectQuery est l'implémentation de IQueryable avec plusieurs fonctionnalités supplémentaires. La première caractéristique que vous découvrirez rapidement est la fonction d'inclusion qui est nécessaire pour le chargement avide des propriétés de navigation (entités liées). La deuxième caractéristique est EQL - langage de requête d'entité. EQL est la deuxième façon dont vous pouvez interroger votre modèle conceptuel. Il a une syntaxe similaire à SQL. Vous pouvez écrire une requête simple sous forme de chaîne, la transmettre au constructeur ObjectQuery et exécuter une requête ou l'utiliser dans Linq-To-Entities.

+0

merci .. ok IQueryable il est alors :-) ... je ne pense pas que je besoin des fonctions avancées de objectquery ... ermmm dois-je jeter .. comme d'une requête LINQ à des entités c'est une requête d'objet qui est retournée ... donc quand je retourne l'objet de ma méthode ... dois-je lancer ou quelque chose? Merci encore –

+0

Non, vous n'avez pas besoin de lancer. –

+0

Merci beaucoup! juste ce dont j'avais besoin! –

Questions connexes