The base query should be something like this:
Parent parentAlias = null;
Child childAlias = null;
return session.QueryOver<Parent>(() => parentAlias).WithSubquery
.WhereExists(QueryOver.Of<Child>(() => childAlias)
.Where(() => parentAlias.Id == childAlias.Parent.Id)
.Select(c => childAlias.Id))
.SingleOrDefault();
note the use of aliases, and the fact that I resolved your query by using a subquery. Note even that in a subquery, the "join condition" must be "inserted" manually (I've used parentAlias.Id == childAlias.Parent.Id
)