1

Je travaille sur l'application MVC3, en utilisant Entity Framework 4.1. J'ai fait une requête LINQ et je l'ai renvoyée sous la forme IEnumerable<T>. Mais, dans le contrôleur, je dois utiliser Include(other entity), comme dans ObjectSet, donc je peux montrer d'autres valeurs d'entité (qui est associée à celle sur laquelle je fais une requête). J'ai essayé la distribution explicite de IEnumerable<T> à ObjectSet<T>, mais il jette une exception. Est-il possible que je peux obtenir ObjectSet de IEnumerable, ou d'inclure l'entité dans IEnumerable?
Merci d'avance.IEnumerable <> to ObjectSet <>, raison: INCLUDE

Répondre

2

Si votre contexte est toujours en vie (si vous ne l'avez pas quitté l'utilisant) et si vous ne l'avez pas fait .ToList() vous devriez être en mesure de jeter à ObjectQuery<T>.

Une pratique plus sûre serait d'utiliser une méthode d'extension sur IQueryable<T> qui vérifie si interrogeable est un ObjectQuery<T> et si oui à des moulages ObjectQuery<T> et renvoie le résultat .include() renvoie la requête sinon d'entrée.

+0

En développant cela, vous pourriez revenir est-il ap raison articulaire que vous utilisez IEnumerable? Si vous avez renvoyé IQueryable à votre contrôleur, il peut utiliser IQueryable. Inclure –

+0

Si j'utilise IQueryable, j'obtiens «L'entité ou le type complexe ne peut pas être construit dans une requête LINQ to Entities». – dodjavola

+0

Voir la modification pour plus de détails. –

0

Une fois que vous l'avez converti en IEnumerable, il est déconnecté de la source de données.

Vous devez inclure les entités associées dans la couche d'accès de la liste (DAL) alors qu'il s'agit toujours d'une requête IQueryable ou IObjectQuery, puis renvoyer le résultat complet sous la forme IEnumerable.

Sinon, vous allez faire un coup supplémentaire sur la BD.

Si

+0

J'ai essayé, mais toujours des champs vides :( – dodjavola

+0

Est-ce que vous voyez les entités étant peuplées avant de quitter le Dal, sont-elles perdues lors du transfert au contrôleur? – Slicksim

+0

Lorsque j'utilise une requête directement sur ObjectSet, cela fonctionne même sans inclure, j'obtiens tous les champs mais quand j'utilise la requête sur la requête que j'ai mentionnée dans la dernière phrase, elle n'est pas perdue quand j'utilise la requête sur IEnumerable (suite à une requête) ... – dodjavola

Questions connexes