Implementar “onde não existe” com o NHibernate QueryOver

Usando o novoQueryOver API no NHibernate, preciso fazer algo equivalente a:

select c.*
from Category c
where not exists (
    select *
    from CategoryProduct cp
    where cp.CategoryID = c.Id
    and cp.ProductID = 'DogFood'
)

Em outras palavras: "Dê-me todas as categorias que não contêm comida de cachorro".

Meu pensamento inicial era algo como:

IEnumerable<Category> FindCategoriesWithoutProduct(Product product)
{
    return _session
        .QueryOver<Category>()
        .Where(c => c.Products.Contains(product))
        .List();
}

No entanto, isso faz com queNHibernate.Impl.ExpressionProcessor exploda com uma "chamada de método não reconhecida" emSystem.Collections.Generic.ICollection<T>.Contains().

Suponho que deve haver outra maneira de fazer isso, provavelmente envolvendo umICriterion, mas minhas pesquisas aqui e no Google não retornaram nada útil.

questionAnswers(2)

yourAnswerToTheQuestion