Bonjour à tous,
Je rencontre un problème pour réaliser une requête avec LINQ To Entities avec un Left Outer Join. Je vous explique le contexte. J’ai une table Client dans laquelle on trouve diverses infos (nom, …). Il a ensuite une table Contrat avec, là aussi, quelques informations (ref du contrat, …). Entre les deux, une table Souscription qui fait office d’intermédiaire. Elle contient une Date de souscription, une date de résiliation.
Un client peut donc souscrire à 0, 1 ou plusieurs contrats et on garde l’historique de ses anciennes souscriptions.
Mon objectif est de ressortir la liste complète des Clients avec le/les souscriptions actuelles (avec une Date de résiliation à null ou supérieure à la date du jour). Je dois bien évidemment récupérer les clients qui n’ont pas de souscriptions (soit car toutes les Souscriptions ont une date de résiliation passée, soit car il n’y a encore rien dans cette table).
La requête SQL pour faire cela est très simple :
Rien de bien compliqué donc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM dbo.Client CLI LEFT OUTER JOIN dbo.Souscription SOU ON CLI.IdCli = SOU.IdCliAND (SOU.DtResilitation IS NULL OR SOU.DtResiliation > CURRENT_TIMESTAMP)
Mais pour faire cela en Linq to Entities, c’est beaucoup plus difficile. J’ai tout essayé sans succés. A chaque fois, il me manque des clients (ceux qui n’ont aucune donnée dans la table Souscription par exemple).
Comment faire une telle requête ?
Merci d'avance pour votre aide.
Partager