NHibernate - PROBLEMA DI CARICAMENTO LAZY -Inizializzazione[]-Impossibile inizializzare il proxy - nessuna sessione.}

NHibernate - PROBLEMA DI CARICAMENTO LAZY -Inizializzazione[]-Impossibile inizializzare il proxy - nessuna sessione.}

Hai ragione. Poiché la sessione NHibernate è chiusa nel tuo metodo GetAccount (è aperta solo nell'ambito di using istruzione), non è possibile caricare oggetti aggiuntivi al di fuori di questo metodo. Ci sono 2 potenziali soluzioni:

  1. Crea la sessione a livello di operazione (cioè nel metodo contenente il codice del problema), quindi usa questa sessione nei metodi get &save. Puoi utilizzare la sessione passandola come parametro ai metodi.
  2. Cambia l'oggetto per non utilizzare il caricamento lento. Puoi farlo aggiungendo .Not.LazyLoad() al Status oggetto nella tua mappatura fluente.

Trovo che il modo più semplice per disattivare il caricamento lento sia aggiungere una convenzione DefaultLazy, ovvero:

.Conventions.Add( DefaultCascade.All(), DefaultLazy.Never() )

Tieni presente che l'attivazione del caricamento lento (DefaultLazy.Always()) può davvero aumentare le prestazioni, a seconda dell'applicazione.

Lo svantaggio è che devi sempre avere una sessione aperta prima di poter caricare in modo lento il resto dei dati in un'entità. La gestione delle sessioni per supportare il caricamento lento è uno dei grandi punti deboli di NHibernate, secondo la mia esperienza.