Blogue ProWeb

Pour aller plus loin

Filtrer par une Navigation Property "many to many" avec un Entity Datasource

  • 2012-06-13
  • François Breton
Filtrer par une Navigation Property "many to many" avec un EntityDatasource

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 !

Publier un commentaire /

Messenger