Bonjour,

Je suis en train d'effectuer une migration d'un projet sous NHibernate 1.2 vers la version 3.2 et j'ai un problème au niveau du chargement d'une collection.

En gros j'ai une classe "Carton" et une classe "Boite", un carton peut contenir plusieur boites. Dans ma classe Carton j'ai une propriété "Inventaire" en virtual qui permet d'accéder à ces cartons.

Au lancement de mon appli tout va bien, ma requête va bien récupérer mon carton, mais la propriété reste vide. Il me semble que lazy loading par défaut est activé, j'ai essayé de mettre ce lazy à false un peu partout mais rien n'y fait, je vois bien que le chargement met plus de temps mais rien n'est récupéré.

J'ai bien évidemment fait le mapping puisque cela fonctionnnait très bien en version 1.2.

Voici mon app.config :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
            <property name="dialect">NHibernate.Dialect.FirebirdDialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.FirebirdClientDriver</property>
      <property name="connection.connection_string">server=dev;User=toto;Password=tata;Database=titi;Charset=ISO8859_1;</property>
      <property name="show_sql">true</property>
      <property name="query.substitutions">true 1, false 0</property>
      <mapping assembly="CACAO_Framework"/>
    </session-factory>
  </hibernate-configuration>
La requête qui récupère mon carton:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public static Carton GetCartonById(long id)
        {
            IQuery srv = GetCurrentSession().CreateQuery("from Carton c where c.Id  = :id");
            srv.SetParameter("id", id);
            Carton result = srv.UniqueResult<Carton>();
            return result;
        }
Est-ce une histoire de lazy loading ?
Ou comment dans ma requête puis je faire un "Load" comme en Linq ?
Des idées ?

Merci d'avance.