私はこのデータベース構造を持っています:
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でこのクエリを実行するにはどうすればよいですか?