+1 for Lazy<ISession>, and Jose's Implementation.

2011/3/31 José F. Romaniello <[email protected]>

> I use lazy session:
>
> http://jfromaniello.blogspot.com/2011/03/effective-nhibernate-session-management.html
>
> In the begin request i put a Lazy<ISession>( () => { var s
> sf.OpenSession(); s.BeginTransaction(); return s; } ) in the request
> context.
> In the end of the request i check if the value was created, and if it was,
> commit and close.
>
> So I Open ISession/ITransaction in the first attemp to access it.
>
> No actionfilter for transaction and no opening session when the request
> doesn't need.
> It is the best way I have seen so far :)
>
>
> 2011/3/31 rhartzog <[email protected]>
>
>> I am set up for session per web request, and every single tiny thing
>> gets a session.  Did I set something up wrong or is this normal?  In
>> nhprof I can see 8 session created for a home page which doesn't even
>> call for a session.  Things like /Scripts/jquery.js, /Content/
>> image1.jpg, favicon.ico all get a session.
>>
>> In global.asax:
>>        public static ISessionFactory SessionFactory =
>> CreateSessionFactory();
>>        public MvcApplication()
>>        {
>>            BeginRequest += MvcApplication_BeginRequest;
>>            EndRequest += MvcApplication_EndRequest;
>>        }
>>
>>        void MvcApplication_BeginRequest(object sender, EventArgs e)
>>        {
>>            if (HttpContext.Current.Items["CurrentSession"] == null)
>>            {
>>                HttpContext.Current.Items["CurrentSession"] =
>> SessionFactory.OpenSession();
>>            }
>>        }
>>
>>        void MvcApplication_EndRequest(object sender, EventArgs e)
>>        {
>>            var session =
>> (ISession)HttpContext.Current.Items["CurrentSession"];
>>
>>            if (session != null)
>>            {
>>                session.Dispose();
>>            }
>>        }
>>
>> IoC container returns session as it's needed:
>>
>>
>> kernel.Bind<ISession>().ToConstant((ISession)HttpContext.Current.Items["CurrentSession"]);
>>
>> I put a screenshot of nhprof screen up showing all of the spawned
>> sessions, you can see it here (https://picasaweb.google.com/rhartzog/
>> NhSetup?authkey=Gv1sRgCJ23-Pqi_djZlwE#5590318316646382866).  Any help
>> would be appreciated.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>



-- 
Saludos,

Walter G. Poch
Sr. .Net Developer
--------------------------------------------
Cell: +54 (9 341) 3353273
[email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to