0

我有这个数据库结构:

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 执行此查询?

4

1 回答 1

1

尝试这个:

var res = Session.QueryOver<Product>()
    .WhereRestrictionOn(x => x.Categories).IsEmpty()
    .List();
于 2013-02-20T12:58:19.173 回答