2010-09-08 6 views
2

J'ai une solution C# avec 3 projets - Data, WCF et UI. Le premier est une bibliothèque de classes qui parle à DB. Il est exposé via le second, qui est de type WCF Service Library - la raison en est qu'il sera exposé dans le troisième projet - app Asp.net appelé UI - comme un simple svc pointant vers dll.nHibernate + wcf + Isession

Juste pour le signaler, je n'utilise pas de modèle Repository.

Je dois avoir ISession pour un appel WCF (similaire à l'approche Session-per-request pour asp.net). Quelqu'un peut-il partager une solution qui fonctionne simplement? Je ne veux utiliser aucun CIO pour cela.

Répondre

1

Utilisez WcfOperationSessionContext (nouveau dans 3.0).

Une fois lié, vos classes de données doivent simplement utiliser SessionFactory.GetCurrentSession().

+0

Va l'utiliser à coup sûr. Juste quand nh ne sera plus alpha! – IamDeveloper

+0

Si c'est un problème, vous pouvez simplement copier la classe à partir d'ici: https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Context/WcfOperationSessionContext.cs et l'utiliser dans votre configuration . –

1

Chaque appel au service est associé à OperationContext unique. OperationContext n'a aucun magasin pour les objets personnalisés mais vous pouvez implémenter extension. En définissant une session dans MessageInspector, vous pouvez lancer une session NHibernate par appel dans un endroit centralisé et accéder à votre contexte étendu dans n'importe quelle opération.

+0

Ceci est assez lié à WCF. Qu'en est-il de l'utilisation de ce projet ISession dans Data? Je voudrais le garder sans aucune connaissance liée au contexte de la WCF. – IamDeveloper

Questions connexes