QueryOver is not Linq provider.
btw we can visit the Expression and convert  'x.User == null' with IsNull
restriction.

2010/4/4 Diego Mijelshon <[email protected]>

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


-- 
Fabio Maulo


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

Reply via email to