简体   繁体   中英

Loading related entities in EF6

I have 3 tables which are related to each others:

Product has many SuggestedPrices

Product has many ProductPricing

so i want to retrieve Suggested Prices like so :

await ctx.SuggestedPrices
    .OrderByDescending(pp => pp.SuggestionDate)
    .Include(p1 => p1.Customer)
    .Include(p2 => p2.Product)
    .Include(p3 => p3.Product.ProductPricing)
    .ToListAsync()

According to your request: i added the followings:

Product 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; }
}

ProductPricing class :

public class ProductPricing {
    // ProductPricings-Product
    public virtual Product Product { get; set; }
    public int ProductId { get; set; }
}

SuggestedPrice 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; }
}

but when i add line .Include(p3 => p3.Product.ProductPricing) i get an error which says:

Use dotted paths for reference navigation properties and the Select operator for collection navigation properties

how do i get rid of this error?

thank to your answers

After some struggling I found out that there's no need to include Product.ProductPricing and it's already there:

OrgPrice = p.Product.ProductPricing.FirstOrDefault().OrgPrice,
PriceAfterDiscount = p.Product.ProductPricing.FirstOrDefault().Price

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM