Nhibernate连接表来检查两个表中的类似字段

时间:2018-01-19 11:48:15

标签: c# nhibernate

如果我的问题很愚蠢,请提前抱歉。我正在对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);

最后一次价格筛选查询不是我想要的。我想得到的是#34;如果ProductReview对象映射到AffiliateProduct,请检查AffiliateProduct的价格。如果没有,请查看ProductReview的价格。"

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

2 个答案:

答案 0 :(得分:0)

您需要使用QueryOver吗? LINQ可能会为您提供更好的服务:

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

答案 1 :(得分:0)

我认为你需要这个:

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