2011-07-11 10 views

Odpowiedz

7

Nie wygląda jak ThreadLocalSessionContext może być obecnie używany. Nie ma konfiguracji, która obsługuje jego użycie i jest ona wymieniona tylko w NHibernate przez test jednostkowy.

Zgodnie z kodem CallSessionContext jest sposobem obsługi sesji w .Net zdalnym wyświetlaniu komentarzy w kodzie poniżej, aby uzyskać więcej szczegółów. Wygląda na to, że NHibernate zasadniczo przechowuje sesję w kontekście zdalnego połączenia. Więcej informacji na temat usług zdalnych konteksty połączeń można znaleźć here

/// <summary> 
/// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> 
/// for each <see cref="System.Runtime.Remoting.Messaging.CallContext"/>. 
/// Not recommended for .NET 2.0 web applications. 

ThreadStaticSessionContext jest używany do obsługi sesji w aplikacjach wielowątkowych. Używa on atrybutu [ThreadStatic] do deklarowania sesji w taki sposób, że istnieje sesja na wątek. Obecnie używam tego. Zobacz to tak odnośnik na przykład kodu w jaki sposób z niego korzystać: What is the best NHibernate session management approach for using in a multithread windows service application?

Ponadto oprócz tego wygląda NHibernate jest dodanie innego kontekstu sesji w wersji 3.2 o nazwie WcfOperationSessionContext. Poniżej znajduje się opis z kodem:

/// <summary> 
/// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> 
/// for the current OperationContext in WCF. Works only during the lifetime of a WCF operation. 
/// </summary> 

Aby odpowiedzieć na to pytanie 2nd to naprawdę zależy od tego, jaki rodzaj aplikacji, wdrażanie i jak używasz sesje. Mam nadzieję, że między dokumentacją nhibernate a powyższymi opisami będziesz miał lepszy obraz tego, z jakiego kontekstu powinieneś skorzystać.