While someone used to Criteria might find it reasonable, it would be
extremely frustrating for a new user to find out that:

  session.Query<Theme>().Where(x => x.User == null).SingleOrDefault();

does exactly what he wants, but:

  session.QueryOver<Theme>().Where(x => x.User == null).SingleOrDefault();

does not.

I'm CC'ing to the dev list... I belive this deserves some discussion.

   Diego


On Sun, Apr 4, 2010 at 05:56, Richard Brown (gmail) <[email protected]
> wrote:

>  Hi Jim,
>
> It's not a bug, it's by design.  The QueryOver API uses the explicit
> Restrictions.IsNull for that construct, so you need to do something like:
>
> return
>     _session.QueryOver<Theme>()
>         .Where(t => t.Name == name)
>         .And(Restrictions.Or(
>             Restrictions.On<Theme>(t => t.User).IsNull,
>             Restrictions.Where<Theme>(t => t.User == user))
>         .SingleOrDefault();
>
>
> http://216.121.112.228/browse/NH-2152
>
> This is a not uncommon request, however the opaqueness of the API is
> deliberate (the API is meant to mirror the way SQL will be generated, not
> hide it from the user).  In addition, this is the way that ICriteria behaves
> (which QueryOver is built upon).
>
> I have changed the existing issue to a feature request.  Please vote for
> the issue, and I'll see how much work it is to implement the feature.
>
> Cheers,
>     Richard
>
>
>  *From:* Diego Mijelshon <[email protected]>
> *Sent:* Saturday, April 03, 2010 10:42 PM
> *To:* nhusers <[email protected]>
> *Subject:* Re: [nhusers] QueryOver - Emits "MyProperty = null" instead of
> "MyProperty is null"
>
> It looks like a bug... or a very non-intuitive behavior.
> You should open an Issue at http://jira.nhforge.org/
>
>    Diego
>
>
> On Sat, Apr 3, 2010 at 18:03, Jim Geurts <[email protected]> wrote:
>
>> Hey guys,
>>
>> I'm using the QueryOver api like:
>>
>> private Theme GetThemeByName(string name, User user) {
>>  return _session.QueryOver<Theme>().Where(x => x.Name == name &&
>> (x.User == null || x.User == user)).SingleOrDefault();
>> }
>>
>>
>> Behind the scenes, it is generating sql similar to:
>>
>> SELECT this_.ThemeId           as ThemeId7_0_,
>>       this_.Name              as Name7_0_,
>>       this_.UserId            as UserId7_0_
>> FROM   pm_Themes this_
>> WHERE  this_.IsDeleted = 0 /* @p0 */
>>       and (this_.Name = 'Test Theme-asfdyT6W' /* @p1 */
>>            and (this_.UserId = NULL /* @p2 */
>>                  or this_.UserId = 691 /* @p3 */))
>>
>> You'll notice that it uses an equal sign instead of the keyword "is"
>> for the UserId check.  I'm using the MsSql2008Dialect dialect.  Is
>> this an nhibernate configuration issue, a bug on my end, or a bug with
>> the QueryOver api?
>>
>> Thanks
>>
>> Jim
>>
>> --
>> 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]<nhusers%[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]<nhusers%[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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>


-- 
To unsubscribe, reply using "remove me" as the subject.

Reply via email to