NHibernate de Configuration “current_session_context_class” possible des valeurs et descriptions
J'ai actuellement ce NHibernate Fluent configuration:
public class NHibernateConfig
{
public static Configuration Configure()
{
var cfg = Fluently.Configure()
.Database(Config.PersistenceConfiguration)
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<SomeAssembly>();
m.FluentMappings.Conventions.AddFromAssemblyOf<EnumConvention>(); })
.ExposeConfiguration(x => x.SetProperty("current_session_context_class", "thread_static"))
.BuildConfiguration();
return cfg;
}
}
Ma question est au sujet de la propriété exposée "current_session_context_class." Je connais deux valeurs: thread_static ou web. Un de mes collègues l'a souligné une autre valeur, qui est appel. Sont-ils connus de la documentation pour les valeurs de cette propriété? Si non, est-il une bonne description de ces valeurs? J'ai écumé Google pendant des heures pour quelques explications avec aucun résultat valable.
OriginalL'auteur johnofcross | 2011-08-18
Vous devez vous connecter pour publier un commentaire.
Voici ma tentative d'explication de ces (Toute entrée supplémentaire serait la bienvenue):
Différence entre CallSessionContext, ThreadLocalSessionContext et ThreadStaticSessionContext
Il y a une section sur la norme NH documentation mais je ne pense pas qu'ils font un très bon travail d'expliquer ou de donner des exemples sur comment exactement pour l'utiliser. Voici le NH documentation lien.
http://nhibernate.info/doc/nhibernate-reference/architecture.html#architecture-current-session
Il y a plusieurs décent articles sur StackOverflow sur comment utiliser cette:
Quel est le meilleur NHibernate session de l'approche de gestion pour l'utilisation dans un multithread windows de l'application de service?
NHibernate.HibernateException: Pas de session lié au contexte actuel
Le NHForge lien est rompu. Quelqu'un a un lien mis à jour?
J'ai corrigé le lien
OriginalL'auteur Cole W
"managed_web", "appel", "thread_static", et "web" sont des valeurs possibles. Configuré comme ceci dans nhibernate configuration:
Une fois que c'est configuré, vous pouvez utiliser SessionFactory.GetCurrentSession(). Vous avez de lier et de délier session vous-même. Un exemple de mise en œuvre:
Au lieu de CallSessionContext, vous pouvez également utiliser ManagedWebSessionContext ou ThreadStaticSessionContext.
ManagedWebSessionContext - Adapté pour Asp.Net application. Session est joint au courant HttpContext (fourni en paramètre lors de la liaison).
ThreadStaticSessionContext - Session est joint au thread courant (je ne vais pas encourager l'utilisation de ce fils continuent de commutation brusquement et de votre session peut être perdu).
CallSessionContext - Adapté pour les applications non web. La Session est attaché à CallContext. J'ai peut-être tort, mais j'imagine ce que session attaché à SessionFactory lui-même. Tant que vous avez une SessionFactory pour l'ensemble de l'application, cette approche permettra d'assurer que vous n'obtiendrez jamais de sessions actives simultanées.
managedweb est obsolète depuis la 4.0.0.GA: * suppression de ManagedWebSessionContext. Tous les fichiers de configuration qui utilisent le "managed_web" contexte de session doit maintenant utiliser les "web"
OriginalL'auteur love kumar