私はこのデータベース構造を持っています:
Products
    ProductId
Categories
    CategoryId
ProductsInCategories
    ProductId
    CategoryId
カテゴリに含まれないすべての製品を見つける必要があります。今、私はこのコードを使用しています:
var results = Session
    .CreateCriteria<Product>()
    .List<Product>()
    .Where(product=> !product.Categories.Any())
    .ToList();
そこで、データベース内のすべての製品を返し、それらをフィルタリングします。これは非効率的です。もっと良い方法が必要です。
私はこのコードを試しました:
var res = Session.QueryOver<Product>()
    .Left.JoinQueryOver(product=> product.Categhories)
    .Where(categories => !categories.Any())
    .TransformUsing(Transformers.DistinctRootEntity)
    .List();
しかし、それはまったく機能しませんでした。いくつかのバリエーションを試しましたが、それもうまくいきませんでした。
NHibernateでこのクエリを実行するにはどうすればよいですか?