Thanks for your response. I am not sure why you say this is a bad design. It's a bi-directional relationship, why is it a bad design?
I hope someone will help me with my questions. Thanks. On Friday, December 28, 2012 1:23:15 AM UTC+2, TheCPUWizard wrote: > > Not addressing the posted issue..but… if you have: > > > > group.Users.Add(user); > > user.Group = group; > > > > you very likely have a bad object implementation/design. The exception > would be if it is possible for both of the following to be legal: > > > > 1: A Group’s Users collection may contain a user where > the user.Group is set to something else > > 2: A user.Group may be set to a group without the group’s > Users collection containing said user > > > > [note: these may sound the same, but are slightly different] > > > > > > > > *From:* [email protected] <javascript:> [mailto: > [email protected] <javascript:>] *On Behalf Of *Andrewz > *Sent:* Thursday, December 27, 2012 5:42 PM > *To:* [email protected] <javascript:> > *Subject:* [nhusers] questions about sql logging and the Inverse in a one > to many relationship > > > > Hello, > > > > I have a bi-directional one to many relationship between a User and a > Group, defined as follows: > > > > http://pastebin.com/qxYZc4jV > > > > Note that the Inverse is not set. Based on my understanding this means > that NHibernate sets the Group_Id each of for the User automatically > > > > Here is my program, adding a new group and assigning an existing user to > this group: > > > > var user = session.Get<User>(1); > > var group = new Group(); > > group.Users.Add(user); > > user.Group = group; > > session.Save(user); > > > > Question #1: The SQL output I get in the console using the show_sql > setting, is this one: http://pastebin.com/Qiagzt6J > > It does not show how the Group_id is set for the user, > only the group insert. > > Why is that? Isn't SQL output showing everything? How > to see the complete SQL? > > > > Question #2: Next, I am adding a new user to an existing group > > > > var group = session.Load<Group>(1); > > var user = new User(); > > user.Group = group; > > group.Users.Add(user); > > > > The output is this one: http://pastebin.com/5RF7Lzq2 > > Why is it getting all users of the group in the 2nd statement? > > I guess it's because of accessing the collection when calling > group.Users.Add(user), but why can't NHibernate see it's actually adding a > new user? > > > > The weird thing is that if I am setting Inverse() on the collection, it > makes the insert without retrieving the collection, which is how it should > work. > > > > I know that in practice, setting Inverse is almost always needed(you want > to have non null restriction on the Group_id not null, and without Inverse, > this is not possible because the insert will fail), but I am really trying > to understand what is going on. > > > > Thanks! > > Andrew > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/nhusers/-/sXSKABVMWQEJ. > To post to this group, send email to [email protected] <javascript:> > . > To unsubscribe from this group, send email to > [email protected] <javascript:>. > 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 view this discussion on the web visit https://groups.google.com/d/msg/nhusers/-/k-rbmLiiykUJ. 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.
