使用包含在3个实体之间

时间:2016-02-20 20:52:49

标签: c# entity-framework

我有3个实体

 public class Sale
{
    public Sale()
    {
        SalesDetails = new List<SalesDetail>();
    }
    [Key]
    public int SaleId { get; set; }

    public DateTime DateAdded { get; set; }
    public decimal Total { get; set; }
    public decimal Discount { get; set; }
    public decimal FinalTotal { get; set; }
    public virtual ICollection<SalesDetail> SalesDetails { get; set; }
}
 public class SalesDetail
{

    [Key]
    public int SaleDetailsId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
    public decimal UnitPrice { get; set; }
    public decimal TotalPrice { get; set; }

    public virtual Sale Sales { get; set; }
}
public class Product
{
    [Key]
    public int ProductId { get; set; }
    public string BarCode { get; set; }
    public string ProductName { get; set; }
    public decimal? Price { get; set; }
    public int Quantity { get; set; }
    public DateTime? DateAdded { get; set; }

    public int CategoryId { get; set; }
}

我使用实体框架如何使用include从3个实体获取数据 我希望从SaleDetail获得销售额和数量,从产品中获取产品名称(带SaleID)。

1 个答案:

答案 0 :(得分:0)

您可以使用Incluse(string path)方法,允许您不包含直接相关的属性。例如:

var salesWithLoadedSubentities = dbContext
                                  .Sales
                                  .Include("SalesDetails")
                                  .Include("SalesDetails.Products");

现在,您的收藏集将包含Sale个实体,其中包含已加载的详细信息和产品。

此外,您可以将lazy loading用于上下文,但不建议这样做,因为它可能会在生产环境中导致性能问题。