For anyone following this thread, the behavior has been fixed on the trunk as of r4969.
More info here: http://216.121.112.228/browse/NH-2152 Thanks, Jim On Apr 4, 10:23 am, Jim Geurts <[email protected]> wrote: > 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.
