在POCO(EF)类中ICollection的目的是什么?

jac*_*oke 2 c# asp.net entity-framework ef-code-first

public virtual ICollection<Product> Products { get; set; }POCO课程的目的是什么?

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


    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*age 5

Products关系到Category当访问该属性将首次偷懒由实体框架加载.

如何加载相关实体在加载相关实体中有更详细的解释:

延迟加载是在第一次访问引用实体/实体的属性时从数据库自动加载实体或实体集合的过程.使用POCO实体类型时,通过创建派生代理类型的实例然后重写虚拟属性以添加加载挂钩来实现延迟加载.

因此,Entity Framework将从类派生一个代理类,CategoryProducts在第一次访问该属性时覆盖该属性的getter 以加载相关产品.