我有两个型号
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,我怎样才能获得评论数据。
答案 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
关于整个主题的补充阅读: