Consulta de NHibernate en varias tablas

Estoy usando NHibernate, y estoy tratando de descubrir cómo escribir una consulta, que busca todos los nombres de mis entidades y enumera los resultados. Como un simple ejemplo, tengo los siguientes objetos;

public class Cat {
public string name {get; set;}
}

public class Dog {
    public string name {get; set;}
}

,public class Owner {
    public string firstname {get; set;}
    public string lastname {get; set;}
}

Eventaully Quiero crear una consulta, por ejemplo, que devuelva a todos los dueños de mascotas con un nombre que contenga "ted", O mascotas con un nombre que contenga "ted".

Aquí hay un ejemplo del SQL que quiero ejecutar:

SELECT TOP 10 d.*, c.*, o.* FROM owners AS o
INNER JOIN dogs AS d ON o.id = d.ownerId 
INNER JOIN cats AS c ON o.id = c.ownerId
WHERE o.lastname like '%ted%' 
OR o.firstname like '%ted%' 
OR c.name like '%ted%' 
OR d.name like '%ted%' 

Cuando lo hago usando criterios como este:

    var criteria = session.CreateCriteria<Owner>()
        .Add(
        Restrictions.Disjunction()
            .Add(Restrictions.Like("FirstName", keyword, MatchMode.Anywhere))
            .Add(Restrictions.Like("LastName", keyword, MatchMode.Anywhere))
        )
        .CreateCriteria("Dog").Add(Restrictions.Like("Name", keyword, MatchMode.Anywhere))
        .CreateCriteria("Cat").Add(Restrictions.Like("Name", keyword, MatchMode.Anywhere));
        return criteria.List<Owner>();

Se genera la siguiente consulta:

   SELECT TOP 10 d.*, c.*, o.* FROM owners AS o
   INNER JOIN dogs AS d ON o.id = d.ownerId 
   INNER JOIN cats AS c ON o.id = c.ownerId 
   WHERE o.lastname like '%ted%' 
   OR o.firstname like '%ted%' 
   AND d.name like '%ted%'
   AND c.name like '%ted%'

¿Cómo puedo ajustar mi consulta para que .CreateCriteria ("Dog") y .CreateCriteria ("Cat") generen un OR en lugar del AND?

gracias por tu ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta