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é
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();
                        }
Mais je reçois l'erreur
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
Je ne comprend pas de quoi il s'agit, et mes recherches ne m'ont pas permis de trouver l'explication.

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 à :
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));
le m_a_l me donne bien les minutes_anc_lots concernés, mais au moment du passage à var test, j'ai l'erreur
Unable to create a constant value of type 'Appli.minutes_anc_lots'. Only primitive types or enumeration types are supported in this context.
Malheureusement mes recherches ne m'ont pas plus permis de trouver de solution à cette erreur.

Qu'est-ce que je fais mal et comment dois-je me corriger ?

Merci.