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.

Reply via email to