如何在实体框架中获取详细信息数据

时间:2015-05-13 10:45:04

标签: entity-framework

我有两个型号

public class Product
{
    public int ProductId { get; set; }

    [Required]
    public string Name { get; set; }

    public string Category { get; set; }

    public int Price { get; set; }

    //Navigation Property
    public ICollection<Review> Reviews { get; set; }
}


 public class Review
{
    public int ReviewId { get; set; }

    public int ProductId { get; set; }

    [Required]
    public string Title { get; set; }

    public string Description { get; set; }

    //Navigation Property
    public Product Product { get; set; }
}

现在在productcontroller中我试图获得所有产品

 public IEnumerable<Product> GetProducts()
    {
        return db.Products.AsEnumerable();
    }

结果是

 {
"ProductId": 1,
"Name": "Product 1",
 "Category": "Category 1",
  "Price": 200,
   "Reviews": null
   }

这样我得到的所有评论都是null,我怎样才能获得评论数据。

1 个答案:

答案 0 :(得分:2)

有几种不同的选择。

使用预先加载加载相关实体。

db.Products.Include(r=> r.Reviews).AsEnumerable();

使用延迟加载使用&#34;虚拟&#34;加载相关实体属性中的关键字。

public class Product
{          
    //Navigation Property
    public virtual ICollection<Review> Reviews { get; set; }
}
public class Review
{        
    //Navigation Property
    public virtual Product Product { get; set; }
}

或者您可以使用显式加载方法来加载相关实体。

我通常选择前两种方法之一。所以我无法举例说明显式加载方法

但你可以在这里阅读:

https://msdn.microsoft.com/en-us/data/jj574232.aspx#explicit

关于整个主题的补充阅读:

https://msdn.microsoft.com/en-us/data/jj574232.aspx