在 3 个实体之间使用包含

本文关键字:包含 之间 实体 | 更新日期: 2023-09-27 18:35:34

我有 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; }
}

我使用实体框架如何使用包含从 3 个实体获取数据我想从销售中获取总计,从销售详细信息中获取数量,从产品(使用 SaleID)获取产品名称。

在 3 个实体之间使用包含

您可以使用 Incluse(字符串路径) 方法,该方法允许您包含不直接相关的属性。例如:

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

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

此外,您可以对上下文使用延迟加载,但不建议这样做,因为它可能会导致生产环境中的性能问题。