Je suis en train d'utiliser Linq-SQL Entity pour mon application MVC2.
J'ai ces tables / entités
Personne ( ID , Nom , Prénom ) Voiture (ID , Modèle , Nom) Revendeur ( ID , Nom)
Et j'ai ces 2 tables de liaison Many to Many
Personnes_Voitures ( ID , ID_Personne , ID_Voiture) Personnes_Revendeurs ( ID, ID_Personne, ID_Revendeur)
public MyModel {
//Certains Champs
public List listeVoitures;
public CarPersonne
{
String détail;
int id;
}
}
var query=(from personne in data.Personne
join PerVoiture in data.Personnes_Voitures on personne.ID equals Personnes_Voitures.ID_Personne into JointPerVoiture
from PerVoiture in JointPerVoiture.DefaultIfEmpty()
join voiture in data.voiture on PerVoiture.id_voiture equals voiture.ID into JointVoiturePer
son
from voiture in JointVoiturePerson.DefaultIfEmpty()
join PerRevendeur in data.Personnes_Revendeurs on personne.ID equals PerRevendeur .id_personne into JointPersRevendeur
from PerRevendeur in JointPersRevendeur.DefaultIfEmpty()
join Revendeur in data.Revendeur on PerRevendeur.id_revendeur equals Revendeur.ID into JointRevendeurPers
from Revendeur in JointRevendeurPers.DefaultIfEmpty()
where personne.ID_UTILISATEUR == UTILISATEUR.ID
select new MyModel
{
listeVoitures = JointPerVoiture.Select(m=>new CarPersonne {détail=m.voiture.Modèle,id = m.ID}).ToList()},
//Autres
});
Je sais que c'est totalement faux mais je débute en Linq-SQL J'ai un problème maintenant :
La requête fonctionne mais mes résultats sont incorrects. En fait, si une personne a 2 voitures, je reçois la même personne deux fois avec 2 listes de voitures.
Exemple
Monsieur Brown a 2 voitures Je reçois Monsieur Brown ---> Liste de voitures (Voiture1 , Voiture2) Monsieur Brown ---> Liste de voitures (Voiture1, Voiture2)
Donc j'ai besoin que si une personne a 2 voitures, je reçois seulement 1 résultat de la personne avec ses propres voitures
Y a-t-il un moyen d'écrire cette requête mieux ? Comment pourrais-je résoudre mon problème ?
Merci