2009-11-09 3 views
0

J'essaie de comprendre comment et s'il est possible de garder une session ouverte sur un service wcf. Le problème est que si je sélectionne une entité et la passe au client et que je la renvoie au serveur avec la même session, je reçois une exception car la session ne connaît plus cette entité (la référence a changé à cause de wcf).WCF FluentNhibernate Gestion de session et cache

donc je dois ouvrir une nouvelle session pour les mises à jour, quand j'ouvre une nouvelle session je perds le mécanisme de cache greate de nhibernate.

Que puis-je faire pour résoudre ce problème? Je veux garder le cache je ne m'inquiète pas si j'ai besoin d'ouvrir la session pour chaque appel.

Répondre

1

Typiquement, vous utiliseriez une session par appel avec wcf. Lorsque vous recevez votre entité du client, vous devriez pouvoir appeler Session.Merge (entité) et faire le travail dont vous avez besoin.

+0

mais pourquoi (session par calll)? Je ne veux pas perdre de cache ... –

+0

Vous pouvez travailler avec votre cache de second niveau qui est par sessionFactory mais une session doit être liée à une unité de travail de courte durée. En wcf, l'appel serait votre unité de travail. Vous pouvez fermer la session et la stocker quelque part pour la prochaine fois (rouvrir la session), mais gérer la durée de vie de la session entre les appels wcf ne sera pas amusant. –

+0

où puis-je lire à propos de ce cache de second niveau ?? –