If you are using NHibernateUtil.Initialize() your issue is in another place.
You have a problem with session management and/or something else about what
put in HttpSession.


2009/10/30 Mohamed Meligy <[email protected]>

> Actually Merge() soled my Save problem. Now I have a Loading problem,
> assuming the scenario of ShoppingCart.Items collection I keep getting the
> error that "collection proxy could not be created, no session or session is
> close" error most of the time. The NHibernateUtil.Initialize() trick
> helped me reduce the possiblity of the error from most-of-the-time to
> some-times.
> Bt it still happens if I try to access ShoppingCart.Items collectio (again,
> assuming the ShoppingCart example) when the ShoppingCart was created or
> fetched from DB in previous request and loaded in current web frequest from
> the SessionState.
>
>
> Regards,
>
> --
> Mohamed Meligy
> Information Analyst (.Net Technologies) – Applications Delivery - TDG
> Injazat Data Systems
> P.O. Box: 8230 Abu Dhabi, UAE.
>
> Phone:  +971 2 6992700
> Direct:   +971 2 4045385
> Mobile:  +971 50 2623624, +971 55 2017 621
>
> E-mail: [email protected]
> Weblog: http://weblogs.asp.net/meligy
>
>
> On Fri, Oct 30, 2009 at 6:27 PM, Fabio Maulo <[email protected]> wrote:
>
>> The merge can work with cascade (depending on mapping)
>>
>> 2009/10/30 Mohamed Meligy <[email protected]>
>>
>> There is a mistake in the above code. I think it's easy guessable but to
>>> avoid confusion here is the corrected part:
>>>
>>>                 if(NHibernateUtil.IsInitialized(cart) == false)
>>>                 {
>>>                     NHibernateUtil.Initialize(cart);
>>>                 }
>>>
>>> the part [[  == false ]] was missed in the emailed version.
>>>
>>> Thoughts ?
>>>
>>>
>>>
>>>
>>>
>>> Regards,
>>>
>>> --
>>> Mohamed Meligy
>>> Information Analyst (.Net Technologies) – Applications Delivery - TDG
>>> Injazat Data Systems
>>> P.O. Box: 8230 Abu Dhabi, UAE.
>>>
>>> Phone:  +971 2 6992700
>>> Direct:   +971 2 4045385
>>> Mobile:  +971 50 2623624, +971 55 2017 621
>>>
>>> E-mail: [email protected]
>>> Weblog: http://weblogs.asp.net/meligy
>>>
>>>
>>> On Fri, Oct 30, 2009 at 10:25 AM, Mohamed Meligy 
>>> <[email protected]>wrote:
>>>
>>>> Session.Merge(..) did the trick for me. Very nice!!
>>>>
>>>> In a related question:
>>>> Now if I want to intialie lets's say ShoppingCart.Items and rotate on
>>>> them in other web requetses, you'd get an exception that the Proxy for each
>>>> ShoppingcartItem is not intiailized because there is no session (because 
>>>> the
>>>> session was closed by end of the first web request).
>>>> Now, I have a similar scenario to this, and I work around it by writing
>>>> some code similar to this (adapted to the given example of ShoppingCart):
>>>>
>>>>         public static ShoppingCart UserShoppingCart
>>>>         {
>>>>             get
>>>>             {
>>>>                 var cart = Context.Session[SessionShoppingCartKey] as
>>>> ShoppingCart
>>>>                 if(cart == null)
>>>>                 {
>>>>                     Context.Session[SessionShoppingCartKey] =
>>>>                         cart = new
>>>> ShoppingCartService().FindShoppingCartSomeHow(..../*whatever
>>>> criteria*/....);
>>>>                 }
>>>>
>>>>                 if(NHibernateUtil.IsInitialized(cart))
>>>>                 {
>>>>                     NHibernateUtil.Initialize(cart);
>>>>                 }
>>>>
>>>>                 return cart;
>>>>             }
>>>>         }
>>>>
>>>>
>>>> *Of course in real code I encapsulate the use of NHibernateUtil (just
>>>> making it fit simple ShoppingCart sample), but I still want to know in
>>>> general, Is this a good approach to do it ???*
>>>>
>>>> You mentioned there are other ways to manage this situation without
>>>> using SessionState. Actually, the example I made up of my mind when writing
>>>> the email to demonstrate sample use of SessionState (I real world
>>>> distributed e-commerce engine I was responsible for ShoppingCart as a whole
>>>> Module of the system in itself and distributed caching and really big
>>>> story). Assume another example of saving some extended logged-in user
>>>> information along the user session, *is there a better way tpo manage
>>>> it ?*
>>>>
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> Mohamed Meligy
>>>> Information Analyst (.Net Technologies) – Applications Delivery - TDG
>>>> Injazat Data Systems
>>>> P.O. Box: 8230 Abu Dhabi, UAE.
>>>>
>>>> Phone:  +971 2 6992700
>>>> Direct:   +971 2 4045385
>>>> Mobile:  +971 50 2623624, +971 55 2017 621
>>>>
>>>> E-mail: [email protected]
>>>> Weblog: http://weblogs.asp.net/meligy
>>>>
>>>>
>>>> On Fri, Oct 30, 2009 at 9:53 AM, Fabio Maulo <[email protected]>wrote:
>>>>
>>>>> session.Lock or Merge; Merge if the entity was saved in some moment.
>>>>> btw there are some other options to manage that situation without use
>>>>> HttpSession
>>>>>
>>>>> 2009/10/29 Mohamed Meligy <[email protected]>
>>>>>
>>>>> This mostly applies to web applications.
>>>>>> Let's say I have an object "ShoppingCart" that is persisted both in
>>>>>> HTTP SessionState and Database for some reason (let's say we want the 
>>>>>> user
>>>>>> to find the cart available if he leaves the site and comes back later).
>>>>>> Every time the user adds a "Product" to the "ShoppingCart", we want to 
>>>>>> add
>>>>>> it to the "SessionState"  already laoded in HTTP SessionState and then we
>>>>>> save the "ShoppingCart" i dataabase.
>>>>>>
>>>>>> *We want to avoid loading the "ShoppingCart" from the database when
>>>>>> we want to change some proprty or add some related object when we already
>>>>>> have it loaded in HTTP SessionState,* but we are also using the
>>>>>> typical "Single NHibernate ISession per HTTP Request" pattern, meaning 
>>>>>> the
>>>>>> "ShoppingCart" is loaded from one NH ISession and changed in other 
>>>>>> different
>>>>>> NH ISessions (since saved in HTTP SessionState, which is maintained 
>>>>>> across
>>>>>> multiple HTTP Requests).
>>>>>> *Will it be possible to have the object loaded from different NH
>>>>>> ISession to be saved usig another ISession?*
>>>>>>
>>>>>> In Linq To Sql and Entity Framework you can theoretically Detach ad
>>>>>> Re-Attach entity to different Data/Entity Context. I LLBLGen (Adapter not
>>>>>> Self Servcing, cause the latter is just ACtiveRecord) the entity is
>>>>>> generated with all required Proxy functionality that makes it self 
>>>>>> tracking
>>>>>> making it easy to use without attaching to cetain Adapter.
>>>>>> How about in NHibernate?
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> --
>>>>>> Mohamed Meligy
>>>>>> Information Analyst (.Net Technologies) – Applications Delivery - TDG
>>>>>> Injazat Data Systems
>>>>>> P.O. Box: 8230 Abu Dhabi, UAE.
>>>>>>
>>>>>> Phone:  +971 2 6992700
>>>>>> Direct:   +971 2 4045385
>>>>>> Mobile:  +971 50 2623624, +971 55 2017 621
>>>>>>
>>>>>> E-mail: [email protected]
>>>>>> Weblog: http://weblogs.asp.net/meligy
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Fabio Maulo
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>>
>>
>
> >
>


-- 
Fabio Maulo

--~--~---------~--~----~------------~-------~--~----~
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