Salut,
Nouveau dans l'EF, je butte comme visiblement bcp de monde sur la même pierre, et malgré mes recherches ne n'arrive pas à m'en sortir. Aussi je vais appel à vos connaissances.
Je me lie a PostgreSQL via EF6, npgsql et EF6.npgsql.
Soit une table minutes contenant plein de choses et qui est liée à plusieurs autres tables, mais surtout qui contient le champs id_minute (int).
Soit la table intermédiaire minutes_anc_lots qui contient les champs id_minute (int), id_anc_lot (str) et ptie (bool). Vu qu'il y a le champs ptie, EF ne fait pas de lien many to many.
Et enfin la table anc_lots qui contient, entre autre id_anc_lot (str), code_ds (str), et no_lot (str).
Le but de ma recherche est de sortir toutes les minutes dont dont les anc_lots répondent a certains critères de code_ds et de no_lot (en y incluant toutes les autres tables liées, mais ça je suppose que ce sera juste une liste d'Include).
Je n'ai pas réussi à faire le Linq d'un coup, alors j'ai essayé en 2 étapes, mais je n'y arrive pas plus.
J'ai d'abord essayéMais je reçois l'erreur
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 if (string.IsNullOrEmpty(SelectedDesSec.Code)) { var minutes = ctr.minutes .Include(min => min.minutes_anc_lots.Select(mal => mal.anc_lots) .Where(al => al.no_lot.CompareTo(ALotFrom) >= 0 && al.no_lot.CompareTo(ALotTo) <= 0) ) .ToList(); } else { var minutes = ctr.minutes .Include(min => min.minutes_anc_lots.Select(mal => mals.anc_lots) .Where(al => al.code_ds == SelectedDesSec.Code && al.no_lot.CompareTo(ALotFrom) >= 0 && al.no_lot.CompareTo(ALotTo) <= 0) ) .ToList(); }Je ne comprend pas de quoi il s'agit, et mes recherches ne m'ont pas permis de trouver l'explication.The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.
Nom du paramètre : path
Ne réussissant pas à résoudre ce problème, j'ai tenté une approche en 2 étapes. Mais ça ne fonctionne pas non plus.
J'en suis à :le m_a_l me donne bien les minutes_anc_lots concernés, mais au moment du passage à var test, j'ai l'erreur
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 List<minutes_anc_lots> m_a_l = null; if (string.IsNullOrEmpty(SelectedDesSec.Code)) m_a_l = ctr.minutes_anc_lots .Include("anc_lots") .Where(al => al.anc_lots.no_lot.CompareTo(ALotFrom) >= 0 && al.anc_lots.no_lot.CompareTo(ALotTo) <= 0).ToList() as List<minutes_anc_lots>; else m_a_l = ctr.minutes_anc_lots .Include("anc_lots") .Where(al => al.anc_lots.code_ds == SelectedDesSec.Code && al.anc_lots.no_lot.CompareTo(ALotFrom) >= 0 && al.anc_lots.no_lot.CompareTo(ALotTo) <= 0).ToList() as List<minutes_anc_lots>; var test = ctr.minutes .Include("minutes_anc_lots") .Include("anc_lots") .Any(mal => m_a_l.Contains((minutes_anc_lots)mal.minutes_anc_lots));Malheureusement mes recherches ne m'ont pas plus permis de trouver de solution à cette erreur.Unable to create a constant value of type 'Appli.minutes_anc_lots'. Only primitive types or enumeration types are supported in this context.
Qu'est-ce que je fais mal et comment dois-je me corriger ?
Merci.
Partager