I need to know what is the difference between JoinQueryOver and JoinAlias, and when to use each?
QueryOver Series - Part 2: Basics and Joining by Andrew Whitaker gives a very good explanation:
Summary:
IQueryOver
is a generic type with two type parametersTRoot
andTSubType
.Select
operates onTRoot
while other QueryOver methods operate onTSubType
.TRoot
stays the same as you’re building a query, butTSubType
changes when you join usingJoinQueryOver
JoinQueryOver
andJoinAlias
add joins to your query.JoinAlias
doesn’t changeTSubType
, butJoinQueryOver
does.- You can use aliases when building a query to refer to properties that don’t belong to
TRoot
orTSubType