在 EF6 中加载相关实体
Loading related entities in EF6
我有 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()
根据您的要求:我添加了以下内容:
产品class:
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; }
}
产品定价class:
public class ProductPricing {
// ProductPricings-Product
public virtual Product Product { get; set; }
public int ProductId { get; set; }
}
建议价格class:
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 运算符
我如何摆脱这个错误?
感谢您的回答
经过一番努力,我发现不需要包含 Product.ProductPricing
,它已经存在了:
OrgPrice = p.Product.ProductPricing.FirstOrDefault().OrgPrice,
PriceAfterDiscount = p.Product.ProductPricing.FirstOrDefault().Price
我有 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()
根据您的要求:我添加了以下内容:
产品class:
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; }
}
产品定价class:
public class ProductPricing {
// ProductPricings-Product
public virtual Product Product { get; set; }
public int ProductId { get; set; }
}
建议价格class:
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 运算符
我如何摆脱这个错误?
感谢您的回答
经过一番努力,我发现不需要包含 Product.ProductPricing
,它已经存在了:
OrgPrice = p.Product.ProductPricing.FirstOrDefault().OrgPrice,
PriceAfterDiscount = p.Product.ProductPricing.FirstOrDefault().Price