Bonjour,

Je suis confronté à un problème en utilisant NHibernate(je précise, je suis débutant en C#)

J'execute en 1er :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
this.fiamEnCours = ReqFiam.Get(comboBoxSociete.SelectedItem as Societe, this.anneeMois.ToString("MMyyyy"));
fiamEnCours est un champ privé de ma classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
private Fiam fiamEnCours;
Voici le Code de ReqFiam.Get() :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 public static Fiam Get(Societe societe, string mois)
        {
            Fiam f;
            using (ISession session = Program.SessionFactory.OpenSession())
            {
                ICriteria critere = session.CreateCriteria<Fiam>();
                critere.Add(Restrictions.Eq("Mois", mois));
                critere.Add(Restrictions.Eq("Societe", societe));
                f = critere.UniqueResult<Fiam>();
                return f;
            }            
        }
Voici la structure de la classe Fiam

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  public partial class Fiam {
 
        private int _IdFiam;
 
        private string _Mois;
 
        private Societe _Societe;
 
        private Iesi.Collections.ISet _FiamDetails;
 
        #region Extensibility Method Definitions
 
        partial void OnCreated();
 
        #endregion
 
        public Fiam()
        {
            this._FiamDetails = new Iesi.Collections.HashedSet();
            OnCreated();
        }
 
 
        /// <summary>
        /// There are no comments for IdFiam in the schema.
        /// </summary>
        public virtual int IdFiam
        {
            get
            {
                return this._IdFiam;
            }
            set
            {
                this._IdFiam = value;
            }
        }
 
 
        /// <summary>
        /// There are no comments for Mois in the schema.
        /// </summary>
        public virtual string Mois
        {
            get
            {
                return this._Mois;
            }
            set
            {
                this._Mois = value;
            }
        }
 
 
        /// <summary>
        /// There are no comments for Societe in the schema.
        /// </summary>
        public virtual Societe Societe
        {
            get
            {
                return this._Societe;
            }
            set
            {
                this._Societe = value;
            }
        }
 
 
        /// <summary>
        /// There are no comments for FiamDetails in the schema.
        /// </summary>
        public virtual Iesi.Collections.ISet FiamDetails
        {
            get
            {
                return this._FiamDetails;
            }
            set
            {
                this._FiamDetails = value;
            }
        }
    }
Et enfin mon problème :

Lorsque je rentre en débogage,

Un point d'arrêt sur return f dans ReqFiam.Get
J'ai bien ma collection f.FiamDetails qui contient des datas.

Par contre dès que je sort de ReqFiam.Get,
this.fiamEnCours.FiamDetails ne contient plus de données

Par ailleurs, voici ce que je vois noté dans this.FiamEncours.FiamDetails
base {NHibernate.HibernateException} = {"Initializing[FiamCollaborateurs.Entites.Fiam#5]-failed to lazily initialize a collection of role: FiamCollaborateurs.Entites.Fiam.FiamDetails, no session or session was closed"}
Doit je comprendre que comme ma session Hibernate a été fermé dans ReqFiam.Get, je peux plus conserver ma collection (qui viens d'une jointure de table) ? Les autres data (hors jointure) sont bien conservé.

Pourriez-vous m'éclairer sur ce sujet, et comment faire en sorte que mon
this.fiamEnCours soit toujours égale à mon f retourné du Get()

Merci d'avance,