NHibernate Query для нескольких таблиц

Я использую NHibernate и пытаюсь выяснить, как написать запрос, который ищет все имена моих сущностей и перечисляет результаты. В качестве простого примера у меня есть следующие объекты;

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

В конце концов я хочу создать запрос, скажем, например, который возвращает всех владельцев домашних животных с именем, содержащим «ted», ИЛИ домашних животных с именем, содержащим «ted».

Вот пример SQL, который я хочу выполнить:

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

Когда я делаю это, используя критерии как это:

    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>();

Следующий запрос генерируется:

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

Как я могу настроить свой запрос так, чтобы .CreateCriteria ("Dog") и .CreateCriteria ("Cat") генерировали OR вместо AND?

Спасибо за вашу помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос