我有一个产品可以有多个PriceDrops的模型。我正在尝试生成最近价格下降的产品列表。
使用加载的产品获取最近的价格下降很容易,我认为这将是最好的开始方式:
dlo.LoadWith<PriceDrop>(pd => pd.Product);
db.LoadOptions = dlo;
return db.PriceDrops.OrderBy(d=>d.CreatedTime);
非常适合最近降价的清单,但我想要一份产品清单。如果我附加一个“.Select(d =&gt; d.Product)”,我会得到一个产品列表 - 这很完美 - 但它们不再与PriceDrops相关联。也就是说,如果我在产品上调用.HasLoadedOrAssignedValues,则返回false。如果我试图询问价格下降,它会尝试返回数据库。
有没有解决方法,或者我是否必须使用Products开始查询而不使用Select修饰符?我试图避免这种情况,因为在某些情况下我想要一个PriceDrops列表,我想尽可能多地重复使用逻辑(为了清楚起见,我省略了上面示例中的where子句和其他过滤器代码)。
谢谢, 汤姆
答案 0 :(得分:1)
尝试加载按其最新PriceDrop订购的产品:
dlo.LoadWith<Product>(p => p.PriceDrops);
db.LoadOptions = dlo;
return db.Products.OrderBy(d => d.PriceDrops.Max(pd => pd.CreatedTime));
我从你的问题中了解到你试图避免这种情况,为什么?
答案 1 :(得分:0)
我认为您需要的是AssociateWith方法,也是DataLoadOptions类。
dlo.AssociateWith<Product>(p => p.PriceDrops.OrderBy(d=>d.CreatedTime))