【发布时间】:2017-12-20 11:16:40
【问题描述】:
我有 3 个相互关联的表:
Product 有很多SuggestedPrices
Product 有很多ProductPricing
所以我想像这样检索建议价格:
await ctx.SuggestedPrices
.OrderByDescending(pp => pp.SuggestionDate)
.Include(p1 => p1.Customer)
.Include(p2 => p2.Product)
.Include(p3 => p3.Product.ProductPricing)
.ToListAsync()
根据您的要求:我添加了以下内容:
产品类别:
public class Product : ReportingBase {
// Product-ProductPricing -> One Product has many Prices
public virtual ICollection<ProductPricing> ProductPricing { get; set; }
// Product-SuggestedPrices
public virtual ICollection<SuggestedPrice> SuggestedPrices { get; set; }
}
ProductPricing 类:
public class ProductPricing {
// ProductPricings-Product
public virtual Product Product { get; set; }
public int ProductId { get; set; }
}
建议价格等级:
public class SuggestedPrice : EntityBase {
// SuggestedPrices-Product
public virtual Product Product { get; set; }
public int ProductId { get; set; }
// SuggestedPrices-Customer
public virtual ApplicationUser Customer { get; set; }
public string CustomerId { get; set; }
}
但是当我添加行 .Include(p3 => p3.Product.ProductPricing) 时,我收到一条错误消息:
参考导航属性使用虚线路径,集合导航属性使用 Select 运算符
如何摆脱这个错误?
感谢您的回答
【问题讨论】:
-
不,这不是我的情况,我不能将
Select运算符放在像Product@FedericoDipuma 这样的实体上 -
将
SuggestedPrice类添加到问题中,这样我们就有了您查询的所有元素。 -
你在这里@FedericoDipuma
-
如果您为您的收藏品使用复数名称,我会更容易理解。无论如何,根据发布的模型,
Include的用法是正确的,你不应该得到那个错误。除非模型与您展示的不同。 -
您确定导航属性
ProductPricings-Product配置正确吗?另外,正如@Ivan 所建议的,请为集合使用复数名称(这是 EF 通常对基于常规的配置所期望的)。
标签: c# include entity-framework-6 lazy-loading eager-loading