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]. 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.
