我有一个模型,其中一个产品可以有多个PriceDrops。我正在尝试生成一个最近价格下降的产品列表。
加载产品后获得最新的降价信息非常简单,我认为这将是最好的开始方式:
dlo.LoadWith<PriceDrop>(pd => pd.Product);
db.LoadOptions = dlo;
return db.PriceDrops.OrderBy(d=>d.CreatedTime);对于最近的降价列表非常有用,但我想要一个产品列表。如果我附加一个".Select(d=>d.Product)“,我将得到一个产品列表--这很完美--但它们不再与PriceDrops相关联。也就是说,如果我在产品上调用.HasLoadedOrAssignedValues,它将返回false。如果我试图询问Price Drops,它会试图返回到DB以获取它们。
有没有办法绕过这个问题,或者我必须从产品开始制作一个查询,而不使用Select修饰符?我试图避免这种情况,因为在某些情况下,我想要一个PriceDrops列表,并且我希望尽可能多地重用逻辑(为了清楚起见,我在上面的示例中省略了where子句和其他过滤器代码)。
谢谢,汤姆
发布于 2009-06-13 20:39:03
尝试加载按最新PriceDrop排序的产品:
dlo.LoadWith<Product>(p => p.PriceDrops);
db.LoadOptions = dlo;
return db.Products.OrderBy(d => d.PriceDrops.Max(pd => pd.CreatedTime));我从你的问题中了解到你在试图避免这种情况,为什么?
发布于 2009-06-13 20:58:16
我认为这里需要的是AssociateWith方法,也是在DataLoadOptions类上。
dlo.AssociateWith<Product>(p => p.PriceDrops.OrderBy(d=>d.CreatedTime))https://stackoverflow.com/questions/991453
复制相似问题