Ik map mijn classes via nhibernate in de database.
Dit werkt allemaal goed. Ik doe het op de volgende manier:
Ik heb een class Sf, waarin de factory 1 maal wordt aangemaakt.
Hierna vraag ik als volgt de gegeven op / en voeg ik ze toe.
Echter is het probleem dat als ik de classes lazy maak het niet meer werkt. Dit komt omdat er elke keer een nieuwe session wordt geopend volgens mij. Als ik dit echter oplos door het volgende in de functie opensession te zetten:
en de volgende property toe te voegen aan de web.xml
Krijg ik de volgende foutmelding:
No session bound to the current context
Ik heb al veel gezocht, maar het lukt me niet om deze fout op te lossen. Heeft iemand een idee hoe ik deze fout kan verhelpen.
Dit werkt allemaal goed. Ik doe het op de volgende manier:
Ik heb een class Sf, waarin de factory 1 maal wordt aangemaakt.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| sealed class Sf { private Configuration cfg = null; private ISessionFactory factory = null; private Sf() { cfg = new Configuration(); cfg.AddAssembly("*****"); factory = cfg.BuildSessionFactory(); } public static readonly Sf SessionFactory = new Sf(); public ISession OpenSession() { return factory.OpenSession(); } } |
Hierna vraag ik als volgt de gegeven op / en voeg ik ze toe.
C#:
1
2
3
4
5
| ISession session = Sf.SessionFactory.OpenSession(); ITransaction transaction = session.BeginTransaction(); .... ..... transaction.Commit(); session.Close(); |
Echter is het probleem dat als ik de classes lazy maak het niet meer werkt. Dit komt omdat er elke keer een nieuwe session wordt geopend volgens mij. Als ik dit echter oplos door het volgende in de functie opensession te zetten:
C#:
1
2
3
4
| public ISession OpenSession() { return factory.GetCurrentSession(); } |
en de volgende property toe te voegen aan de web.xml
XML:
1
| <add key="hibernate.current_session_context_class" value="web" /> |
Krijg ik de volgende foutmelding:
No session bound to the current context
Ik heb al veel gezocht, maar het lukt me niet om deze fout op te lossen. Heeft iemand een idee hoe ik deze fout kan verhelpen.