Bonjour à tous,
Je suis face à un sérieux problème et je n'arrive vraiment pas à le résoudre. Malgré les exemples du net, il m'est impossible d'arriver au résultat escompté.
J'ai besoin d'assigner des propriétés calculées dans une requete Linq à mon résultat.
Le contexte : une requete Linq to Entity Framework de type ObjectQuery(Of MON_ENTITY)
J'ai étendu mon entity avec une classe partielle pour lui ajouter deux propriétés.
Le besoin : effectuer une requete pour récupérer la liste d'entity dont les deux propriétés auront été remplies par des sous requetes.
Typiquement on peut imaginer une entity Catégorie avec une propriété NombreProduits. Donc la requete donnerai quelque chose comme ca :
Mais cela me retourne un anonymous type qui ne m'arrange guère. En effet, ma requete typée ObjectQuery(Of Categorie) est passée en paramètre de deux fonctions permettant respectivement de réaliser les includes, et de faire un filtrage selon critères. Or le retour étant de type anonymous, le cast en objectquery(of categorie) ne passe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 from c as Categorie in Db.Categories Select c, c.Produits.Count
J'ai rencontré sur le net une source qui montrait comment affecter une valeur à l'intérieur de la requete elle meme.
Cela donnait quelque chose comme ca :
Malheureusement je n'ai jamais réussi à faire fonctionner l'extension car je pense qu'elle a été codée pour du linq to objects.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 from c as Categorie in Db.Categories Select c.SetProperty(function(cat) cat.NombreProduits = c.Produits.Count)
Auriez vous une idée de comment réaliser ce genre d'extension svp ? ou même un point de départ qui me permettrait de démarrer une extension linq to EF qui fonctionne.
J'ai pu croiser une méthode mais qui nécessitait de modifier une partie du fichier EDMX, ce qui n'est pas concevable car il est autogénéré à chaque mise à jour de base de données.
Merci d'avance
Partager