Hi,

Thanks for your response.

The question #1: Since the Inverse is not set, the theory is that 
NHibernate sets the Group_Id each of for the User automatically.
Which is correct, after I run the code the Group_Id is indeed set in the 
database.
But I cannot see how Group_Id is set in the SQL output: 
http://pastebin.com/Qiagzt6J 
There is no insert with a Group_Id value set.

The question #2: yes, it's getting the collection from database as you 
mentioned, but my question is why does it have to bring the collection in 
order to perform the insert?
Like I said, if I am setting the Inverse, it inserts without the bringing 
the collection.

Thanks,
Andrew


On Saturday, December 29, 2012 2:54:38 AM UTC+2, SexualChocolate wrote:
>
> Hi,
>
> I'm not sure I understand question one precisely, but as for number two-
>
> When you do group.users.add, the users object is being lazy loaded from 
> the database. That creates the select you're seeing.
> On Dec 27, 2012 5:47 PM, "Andrewz" <[email protected] <javascript:>> 
> 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<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<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/-/-51pzlQNyZkJ.
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