Bonjour à tous !
J'espère que mon titre est assez évocateur.
Alors le contexte, je travaille sur une application Silverlight
Pour l'accès aux données, j'ai ajouté à mon projet Aspx (ajouté automatiquement lorsqu'on crée un projet silverlight) un ADo.Net Entity Data Model en y déclarant toutes les classes de ma base.
Ensuite j'ai ajouté un Domain Service Class que j'ai parâmétré avec mon ADO.Net Entity Data Model.
Enfin bref du côté silverlight, j'ai une classe qui se génère seul et qui me permet d'accéder aux données du coté aspx (cf : )
Ca marche pas mal, j'interroge aisément ma base et je peux remplir mes combobox à loisir (je crée une fonction de recherche), j'arrive facilement a recuperer des éléments filtrés par certains combobox :
Petit exemple :
Cet exemple est parfaitement fonctionnel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static EntityList<T_CONTRAT> GetByCodePortefeuille(T_PORTEFEUILLE_COMMERCIAL portefeuille) { SouscriptionContext context = new SouscriptionContext(); var query = from contrat in context.GetT_CONTRATQuery() where contrat.CON_INT_PRC_ID == portefeuille.PRC_INT_ID select contrat; context.Load(query); return context.T_CONTRATs; }
En revanche je rencontre un souci lorsque j'essaie de récupérer une liste de lignes d'une table en utilisant un Where.
Pour mon problème j'ai 3 tables :
T_CONTRAT
T_STATUT
T_RATT_STATUT_CONTRAT qui posséde une clé étrangère des deux autres tables et qui me permet de conserver un historique du statut de mes contrats
J'ai essayé ce code la :
mais ça plante sur la deuxième requête (de toute manière, la liste Id_Ratt ne contient rien)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 SouscriptionContext contextratt = new SouscriptionContext(); var queryratt = from ratt in contextratt.GetT_RATT_STATUT_CONTRATQuery() where ratt.T_STATUT.STT_COD_STATUT == Statut.STT_COD_STATUT && ratt.SCT_DAT_FIN == null select ratt; contextratt.Load(queryratt); EntityList<T_RATT_STATUT_CONTRAT> Ratts = contextratt.T_RATT_STATUT_CONTRATs; List<int> Id_Ratt = new List<int>(); foreach (T_RATT_STATUT_CONTRAT ratt in Ratts) { Id_Ratt.Add(ratt.SCT_ID_CONTRAT); } SouscriptionContext context = new SouscriptionContext(); var query = from contrat in context.GetT_CONTRATQuery() where Id_Ratt.Contains(contrat.CON_INT_ID) select contrat; context.Load(query); return context.T_CONTRATs;
J'ai aussi essayé ça :
Et dans ce cas T_RATT_STATUT_CONTRAT un EntityCollection ce qui ne m'avance pas plus que ça puisque je ne sais pâs l'utiliser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SouscriptionContext context = new SouscriptionContext(); var query = from contrat in context.GetT_CONTRATQuery() where contrat.T_RATT_STATUT_CONTRAT."pas d'accès à T_STATUT" select contrat; context.Load(query); return context.T_CONTRATs;
Enfin bref je m'en remet à vos lumières pour savoir comment récupérer les éléments qui m'intéressent
Cordialement
Partager