I'm guessing this has to do with using session.Load<>() as opposed to 
session.Get<>() which you should be using in this situation (if you weren't 
doing group.Users.Add() then Load would have been fine).

This might clarify some things: 
http://ayende.com/blog/3988/nhibernate-the-difference-between-get-load-and-querying-by-id

P.S. This is not an question about FluentNHibernate but about NHibernate, 
try posting this in the nhusers group.

On Sunday, December 23, 2012 5:36:52 PM UTC+1, Andrewz wrote:
>
> Anyone? I am a bit surprised by the lack of feedback
>
> On Thursday, December 20, 2012 2:13:28 AM UTC+2, Andrewz wrote:
>>
>> 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 
"Fluent NHibernate" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/fluent-nhibernate/-/WV3_zR3OCxwJ.
To post to this group, send email to fluent-nhibernate@googlegroups.com.
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en.

Reply via email to