This compiles, but is untested. No idea if correct or supported in NH.
But based on docs this seems like a starting point.

var obj = from p in Session.Query<Project>()
                      join t in Session.Query<Type>() on p.Type equals
t into mygroup
                      from item in mygroup.DefaultIfEmpty()
                      orderby item.Label
                      select o;


http://msdn.microsoft.com/en-us/library/bb397895.aspx
http://msdn.microsoft.com/en-us/vbasic/bb737929.aspx#grpjoinleftout
http://msdn.microsoft.com/en-us/library/bb311040.aspx


/Oskar


2010/6/24 Diego Mijelshon <[email protected]>:
> No, that just sets join fetching. Left.JoinQueryOver changes the criteria
> "context" to an association, like CreateCriteria.
>
>    Diego
>
>
> On Thu, Jun 24, 2010 at 17:52, Mohamed Meligy <[email protected]> wrote:
>>
>> So, for join fetch the Left.JoinQueryOver(...) is equivalent to
>> myQueryOver.Fetch( x => x.Ref).Eager ?
>>
>> --
>> Mohamed Meligy
>> Senior Developer (Microsoft Technologies - Technical Delivery)
>> Injazat Data Systems
>> P.O. Box: 8230 Abu Dhabi, UAE
>> [ Local Time Offset:  GMT +4 ]
>>
>> Direct:  +971   2 4045385
>> Mobile: +971 50 2623624, +971 55 2017 621
>>
>> E-mail: [email protected]
>> Weblog: http://gurustop.net
>>
>>
>> On Fri, Jun 25, 2010 at 12:30 AM, Diego Mijelshon <[email protected]>
>> wrote:
>>>
>>> It would actually be
>>>
>>>
>>> session.QueryOver<Project>().Left.JoinQueryOver(p => p.Type).OrderBy(t => t.Label).Asc
>>>
>>>
>>>
>>>
>>> The problem is, that is equivalent to:
>>> select project
>>> from Project project
>>> left join fetch project.Type as type
>>> order by type.Label
>>> ...because QueryOver is just a pretty face for Criteria, and joins in
>>> Criteria always fetch the association.
>>> Also, it has none of the benefits of Linq, except the familiar syntax.
>>>    Diego
>>>
>>>
>>> On Thu, Jun 24, 2010 at 17:05, Mohamed Meligy <[email protected]>
>>> wrote:
>>>>
>>>> You can do left join in the QueryOver API (very similar to LINQ method
>>>> chaining) you can do something like:
>>>>
>>>>> session.QueryOver<Project>().Left.JoinQueryOver(p => p.Type).OrderBy(p
>>>>> => p.Type.Label).Take(...);
>>>>
>>>> (warning: not tested, try also session.QueryOver<ProjectType>() if
>>>> p.Type doesn't work. I haven't tried the code and there is no XML
>>>> documentation to advise)
>>>>
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> Mohamed Meligy
>>>> Senior Developer (Microsoft Technologies - Technical Delivery)
>>>> Injazat Data Systems
>>>> P.O. Box: 8230 Abu Dhabi, UAE
>>>> [ Local Time Offset:  GMT +4 ]
>>>>
>>>> Direct:  +971   2 4045385
>>>> Mobile: +971 50 2623624, +971 55 2017 621
>>>>
>>>> E-mail: [email protected]
>>>> Weblog: http://gurustop.net
>>>>
>>>>
>>>> On Thu, Jun 24, 2010 at 5:43 PM, Diego Mijelshon
>>>> <[email protected]> wrote:
>>>>>
>>>>> Hmmm... it's slightly unexpected as a behavior, although it's
>>>>> consistent with the equivalent HQL:
>>>>>   from Project order by Project.Type.Label
>>>>> It generates an inner join (actually, a select from two tables with a
>>>>> where clause)
>>>>>
>>>>> With HQL you can use explicit left joins:
>>>>> select project
>>>>> from Project project
>>>>> left join project.Type as type
>>>>> order by type.Label
>>>>> But I don't know if it's possible with Linq...
>>>>>    Diego
>>>>>
>>>>>
>>>>> On Thu, Jun 24, 2010 at 08:59, Kakone <[email protected]> wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I have a project class with a Type property (it's a nullable reference
>>>>>> to a ProjectType entity).
>>>>>>
>>>>>> I want to order like this :
>>>>>> Session.Query<Project>().OrderBy(p.Type.Label).ToList()
>>>>>> When I do this, I don't get the objects where Type property value is
>>>>>> null.
>>>>>>
>>>>>> So, I tried to write this :
>>>>>> Session.Query<Project>().OrderBy(p => p.Type == null ? null :
>>>>>> p.Type.Label).ToList()
>>>>>> But, in this case, I've got an exception : "No persister for :
>>>>>> xx.xxx.EntityBase"
>>>>>>
>>>>>> What can I do to get all the objects including those with Type ==
>>>>>> null ?
>>>>>>
>>>>>>
>>>>>> Cordially,
>>>>>> Kakone.
>>>>>>
>>>>>> --
>>>>>> 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.
>>>>>>
>>>>>
>>>>> --
>>>>> 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.
>>>>
>>>> --
>>>> 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.
>>>
>>> --
>>> 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.
>>
>> --
>> 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.
>
> --
> 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.
>

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