Filtrer par une Navigation Property "many to many" avec un Entity Datasource
- 2012-06-13
- François Breton
Amateurs d'EntityDataSource, voici un truc pour VOUS !
Dans une relation de plusieurs à plusieurs, quand on veut faire un "select * from x inner join y where y.id = @id" il nous dit souvent :
"To extract a property of a collection element, use a subquery to iterate over the collection."
Pour pallier à ce petit inconvénient, il suffit de mettre
Where=" EXISTS ( SELECT Produits.ProduitId FROM it. Produits WHERE Produits.ProduitId = @id )
Comme ça on utilise une sous-requête comme il faut ! mais on n'a pas plus accès à la propriété à la multiplicity = * (many)...=
Joyeux Codage !
PS. De plus, en VB ! Une belle manière d'accéder à sa NavigationProperty :
Dim listeDeProduitBois = CType ((From p In db.Produits From b In p.Bois1
Where b.BoisId = x.BoisId Select p), ObjectQuery (Of Produits)). Include ("Descriptions")
"Imports System.Data.Objects" pour le "ObjectQuery".
PS2. Un autre beau where (dans un beau tutorial) : @PersonID IN (SELECT VALUE instructor.PersonID FROM it.People AS instructor)
À propos de l'auteur
François Breton
Programmeur Senior
À l'affût des perpétuels changements du monde des technologies !