Super clear explanation and really really cool feature :) :). Although I'd see it as workaround at first the more I read in the explanation the more I love this!
Can this explanation go as the XML comment of the method or something? Thanks a lot *Fabio *(sorry that I didn't understand what you meant at first and assumed without checking), and Anne. Regards, -- Mohamed Meligy Senior Developer, Team Lead Backup (.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 Mon, Nov 9, 2009 at 12:02 PM, Anne Epstein <[email protected]> wrote: > Mohamed, > See this post: > > http://ayende.com/Blog/archive/2009/04/30/nhibernate-ndash-the-difference-between-get-load-and-querying-by.aspx > > Summary- Here's what you do to get the behavior you're looking for: > > 1) retrieve your Category from your repository > 2) assign this category to the product > 3) save > > You might ask: "But won't that cause a db SELECT call in step 1?" *No*, > not if you use the Load() method. Load() will create a proxy of your > Category object with the id you specify, *without* getting the contained > data of the Category from the db. Assign that proxy object to the > product.Category. Save your product, and you *never* had to hit the db to > get your Category. Of course, if you were to access one of the properties > of Category in your code, NH would make a db call to get the values... but > if you only do a straight Load() and assign the "retrieved" proxy to > product.Category, it'll work exactly the way you want, no SELECTs, ony one > INSERT statement. Next time you pull Product out of the db and access its > Category, your relationship with this Category will come back out just the > way you want. > > Anne > > > > On Mon, Nov 9, 2009 at 1:47 AM, Mohamed Meligy <[email protected]>wrote: > >> Well, what if I do not want to load the category? I know it sounds stupid >> caring about only one more query it shouldn't be an optimization, but I was >> just curious if it was possible. >> >> >> Regards, >> >> -- >> Mohamed Meligy >> Senior Developer, Team Lead Backup (.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 Mon, Nov 9, 2009 at 7:26 AM, Fabio Maulo <[email protected]>wrote: >> >>> product.Category = session.Load<Category>(theId); >>> >>> >>> 2009/11/8 Mohamed Meligy <[email protected]> >>> >>> Let's say I have a mapping like this (using Fluent, sample made up for >>>> the sake of the email) >>>> >>>> References(product => product.Category, "CategoryID"); >>>> >>>> where each One Category has zero to Many Products. >>>> >>>> Lets say I need to set the value of the Category.Id of the Product >>>> directly without loading the Category object. I thought I could do >>>> something >>>> like: >>>> >>>> product.Category.Id <http://product.category.id/> = >>>> int.Parse(ddlCategory.SelectedValue); >>>> >>>> (Code is OVER simplified for demoing here, yes, I have layering in my >>>> application :)). >>>> >>>> Someone told me the proxy handles getting the value for >>>> product.Category.Id <http://product.category.id/> (if exists) without >>>> loading the category, so, I thought it may work when I SET the Id, but what >>>> happened is that it gave a NullReferenceException (makes sense of course). >>>> >>>> So, I was asking, is there another way of doing this ?? (whether or not >>>> it is a right idea to do it at all please) >>>> >>>> >>>> Thank you very much. >>>> >>>> Regards, >>>> >>>> -- >>>> Mohamed Meligy >>>> Senior Developer, Team Lead Backup (.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 >>> >>> >>> >> >> >> --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
