مهمترین مسئلهای که در Session management در NHibernate وجود دارد، مسئله نگهداری session است. به طور معمول سعی میشود برای انجام یک کار فقط یک session باز شود نه بیشتر. اگر طی انجام همان کار مجدداً نیاز به session شد از همان session قبلی استفاده میشود نه این که یک session جدید open شود.
این کار در وب خیلی راحت است. session instance مورد نظر در HttpContext قرار داده میشود. در مورد ویندوز و WCF هم کار چندان سختی نیست. چون از Thread برای نگهداری session استفاده میشود. اما موقعیتهایی وجود دارد که میخواهیم به طور هم زمان در دو محیط از یک Session Factory و Session استفاده نماییم. مثلاً هم وب را داریم و هم یک سرویس WCF را.
این طور وقتها میتوان یک SessionContext سفارشی ساده ساخت که هم session را در HttpContext نگاه داشت و هم در جای دیگری که در محیط مورد نظر معنی دار است. اصل این راه حل در اینجا توضیح داده شده.
دیدگاهها
برای این منظور توی این کتاب راه حل جالبی رو پیاده سازی کرده
http://www.amazon.com/Professional-ASP-NET-Design-Patterns-Millett/dp/0470292784
در مورد EF هم راه حلی بنظرتون میاد
در مورد EF اصلاً نمیدونم از session management استفاده میکنه یا نه