I have a one-to-one relationship and when the child table is null for
the main object the SQL query that's created is wrong, it gives it a
parameter of the primary key but it never uses this parameter in the
query itself. This causes it to return all records in the table and a
"More than one row with the given identifier was found" error when
actually it shouldn't be finding anything.

Parent has:
<one-to-one name="Profile" class="DatabaseModel.Models.UserProfile,
DatabaseModel" cascade="all" property-ref="UserInfo" />

Child has:
<one-to-one name="UserInfo" class="DatabaseModel.Models.UserInfo"
cascade="delete" constrained="true" />

The query that gets generated is:
exec sp_executesql N'SELECT userprofil0_.UserInfoRefId as
UserInfo1_4_0_, userprofil0_.Version as Version4_0_,
userprofil0_.CurrentRosmatRefId as CurrentR3_4_0_ FROM UserProfile
userprofil0_',N'@p0 uniqueidentifier',@p0='60E9764B-
D48E-4260-81BC-308B3486851F'

Notice the lack of a WHERE clause

This is what I think it should be:
exec sp_executesql N'SELECT userprofil0_.UserInfoRefId as
UserInfo1_4_0_, userprofil0_.Version as Version4_0_,
userprofil0_.CurrentRosmatRefId as CurrentR3_4_0_ FROM UserProfile
userprofil0_ WHERE userprofil0_.userinforef...@p0',N'@p0
uniqueidentifier',@p0='60E9764B-D48E-4260-81BC-308B3486851F'


This is on NHibernate 2.1.2

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

Reply via email to