Nhibernate 连接表以检查两个表中的相似字段

Nhibernate Joining Tables to check similar fields from two tables

如果我的问题很愚蠢,请提前道歉。我正在对 ProductReview 对象进行 Nhibernate 查询,其中一些对象可以链接到 AffiliateProduct。所以基本上就是这样。

public class ProductReview    
{   
    public virtual decimal? Price { get; set; }    
    public virtual AffiliateProduct AffiliateProduct { get; set; }
}

public class AffiliateProduct        
{
    public virtual decimal? Price { get; set; }
}

ProductReview productReview = null;    
AffiliateProduct affiliateProduct = null;    

var queryOver = _session.QueryOver(() => productReview)
            .JoinAlias(x => x.AffiliateProduct, 
                      () => affiliateProduct, JoinType.LeftOuterJoin);

下一行是我无法理解的地方。

queryOver = queryOver.Where(() => productReview.Price>= 100 || affiliateProduct.Price >= 100);

最后的价格过滤查询不是我想要得到的。我想要得到的是 "If ProductReview object is mapped to AffiliateProduct, check with the price from AffiliateProduct. If not, check with ProductReview's price."

我是 nhibernate 的新手,任何人都可以请指导是否可以检查最后一个过滤器。它是我必须使用的标准吗?我挠头。谢谢

是否需要使用QueryOver? LINQ 可能会更好地为您服务:

var results = 
    _session
        .Query<ProductReview>()
        .Where(r => (r.AffiliateProduct != null && r.AffiliateProduct.Price > =100) || r.Price >= 100)
        .ToList();

我想你需要这个:

queryOver = queryOver.Where(() => (affiliateProduct.Price != null && affiliateProduct.Price >= 100) || productReview.Price>= 100);