我有这个数据库结构:
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 执行此查询?