bonjour,

je cherche a faire un requête sql avec entities framework ,

voici ce que je cherche a reproduire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT pers.TIE_ID
      ,[PRS_NOM]
      ,[PRS_PRENOM]
 
  FROM PERSON as pers
 
  INNER JOIN ORGANIS_PERSON as orgpers
  ON pers.TIE_ID = orgpers.TIE_ID_PRS
  INNER JOIN ORGANISATION as org
  ON  orgpers.TIE_ID_ORG = org.TIE_ID
  WHERE org.TIE_ID=1
maintenant voici mon code c# de cette même requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
IQueryable<V_TIERS_PERSON_SMP> filteredPERS;
filteredPERS = filteredPERS.Join(entities.ORGANIS_PERSON,
                              dc => dc.TIE_ID,
                              d => d.TIE_ID_PRS,
                              (dc, d) => new { PERSON = dc, ORGANIS_PERSON = d })
                              .Join(entities.ORGANISATION,
                              orgpers => orgpers.ORGANIS_PERSON.TIE_ID_ORG,
                              org => org.TIE_ID,
                              (orgpers,org) => new { ORGANIS_PERSON = orgpers, ORGANISATION = org })
                              .Where(a => a.ORGANISATION.TIE_ID == selectedTier.TIE_ID1);
mais ce code produit une erreur :

Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: <anonymous type: EditionTiers.PERSON dc, EditionTiers.ORGANIS_PERSON d> dORGANIS_PERSON, EditionTiers.ORGANISATION ORGANISATION>>' to 'System.Linq.IQueryable<EditionTiers.PERSON>'. An explicit conversion exists (are you missing a cast?)

sauf que si je rajoute un cast apres mon where comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
.Where(a => a.org.TIE_ID == selectedTier.TIE_ID1).Cast<PERSON>()
j'obtient une autre erreur

Une exception de type 'System.NotSupportedException' s'est produite dans EntityFramework.SqlServer.dll mais n'a pas été gérée dans le code utilisateur

Informations supplémentaires : Impossible d'effectuer un cast du type 'type anonyme' en type 'EditionTiers.V_TIERS_PERSON_SMP'. LINQ to Entities ne prend en charge que le cast des types primitifs ou des types énumération EDM.

et la je suis perdu svp aidé moi