You are correct, I did not mean the collection wouldn't result in a select, I just meant that I did not want to do the initial select to get the Author instance from the session. Your suggestion to get the children through session.CreateQuery is excellent, I was able to achieve what I wanted in the same number of sql statements as otherwise would have been created by NH if I got the author directly from the session. Mission accomplished. As far as versioning I am not doing so right now, I do understand the implications. Once gain, thank you very much for your help.
On Jul 29, 1:33 pm, Fabio Maulo <[email protected]> wrote: > well... I'm pretty sure that even EF is running a select to db because with > what you are doing there is no way to have the collection filled without, at > least, a select or two (have a look to MsSQL profiler). > In merge there is no proxy because you should specify cascade="merge" in the > mapping or cascade="lock, merge" or cascade="lock". > > 2009/7/29 e36M3 <[email protected]> > > > > > > > Fabio, thanks for your reply. The reason author.Articles is null is > > because the calling application created this Author instances and > > assigned it an id. Something like this Author authorToDelete = new > > Author() { AuthorID = 5 };. Once this is done this code (website) > > sends it to the web service which than needs to delete the author, > > however it also needs to delete all of its children. Being that the > > object was created outside of the NH context, there is no proxy for > > author.Articles when the web service receives it. I attempted to use > > session.Lock and session.Merge, however there is still no proxy > > instance for author.Articles, therefor I cannot delete the articles > > directly by looping through author.Articles. Obviously I can query > > the database to obtain the author object from the session and then use > > it's proxy but I would love to avoid that select. > > > On Jul 29, 10:37 am, Fabio Maulo <[email protected]> wrote: > > > To reattach an object to a session you have various > > > ways.session.Lock(LockMode.None), > > > session.Merge and so on. > > > In your case I don't understand "author.Articles is always null" because > > > the "author" instance come from another method out-side NH > > responsibility. > > > > 2009/7/29 e36M3 <[email protected]> > > > > > Hello all, after creating a sample web application POC using the > > > > Entity Framework I am attempting to do the same with NH. I ran into > > > > what is probably a very simple issue however I can't quite find the > > > > solution. My web application is passing an Author object to my service > > > > which then supposed to delete the author and all of its children > > > > (Articles). I am not utilizing cascading delete so I am trying to nuke > > > > those articles manually before I nuke the author, however I can't get > > > > the author.Articles list to populate. In the below example > > > > author.Articles is always null. I understand I must be missing > > > > something regarding the disconnected nature of what I am attempting to > > > > do here, but in Entity Framework I was able to simply attach my entity > > > > to the ObjectContext (session in NH) and go from there as usual. I > > > > recognize that I could simply query first for the Author instance > > > > first, but the whole point is to avoid that query as I already have > > > > that object being passed into the service. When I put a break-point > > > > on the author I realize that there is no proxy class associated with > > > > author.Articles, how do I get that proxy class to appear? Thank you. > > > > > public void DeleteAuthor(Author author) > > > > { > > > > using (ISession session = GetSession()) > > > > { > > > > using (ITransaction tx = session.BeginTransaction()) > > > > { > > > > try > > > > { > > > > foreach (Article article in author.Articles) > > > > { > > > > session.Delete(article); > > > > } > > > > > session.Delete(author); > > > > session.Flush(); > > > > tx.Commit(); > > > > } > > > > catch (HibernateException) > > > > { > > > > tx.Rollback(); > > > > throw; > > > > } > > > > } > > > > } > > > > } > > > > -- > > > 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 -~----------~----~----~----~------~----~------~--~---
