选择NHibernate中没有多对多关系的项目
本文关键字:关系 项目 NHibernate 选择 | 更新日期: 2023-09-27 18:00:19
我有这样的数据库结构:
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执行此查询?
试试这个:
var res = Session.QueryOver<Product>()
.WhereRestrictionOn(x => x.Categories).IsEmpty()
.List();