POCO课程中public virtual ICollection<Product> Products { get; set; }
的目的是什么?
public class Category
{
[ScaffoldColumn(false)]
public int CategoryID { get; set; }
[Required, StringLength(100), Display(Name = "Name")]
public string CategoryName { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
答案 0 :(得分:5)
第一次访问该属性时,Entity Framework将延迟加载与Products
相关的Category
。
延迟加载是在第一次访问引用实体/实体的属性时从数据库自动加载实体或实体集合的过程。使用POCO实体类型时,通过创建派生代理类型的实例,然后覆盖虚拟属性以添加加载钩子来实现延迟加载。
因此,Entity Framework将从Category
类派生一个代理类,并覆盖Products
属性的getter,以便在第一次访问该属性时加载相关产品。