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