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] [mailto:[email protected]] On Behalf
Of Andrewz
Sent: Thursday, December 27, 2012 5:42 PM
To: [email protected]
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].
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.
--
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.