Part of the reason for using NH is to abstract away the persistence
layer.  That said, as an end user, I would much rather have NH assume
that I meant "is null" rather than "= null".  Maybe users that want it
the other way could add explicit restrictions to get the behavior they
want.  It may be a matter of preference, but as a fairly new user to
NH, the current behavior doesn't feel intuitive.

Thanks,

Jim


On Apr 4, 6:29 am, Diego Mijelshon <[email protected]> wrote:
> 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 athttp://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.

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