如果我的问题很愚蠢,请提前抱歉。我正在对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的新手,任何人都可以请指导,无论如何都要检查最后一个过滤器。是否必须使用标准?我在挠头。感谢
答案 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);