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