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

时间:2013-02-19 03:35:17

标签: c# asp.net entity-framework ef-code-first

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


    }

1 个答案:

答案 0 :(得分:5)

第一次访问该属性时,Entity Framework将延迟加载与Products相关的Category

Loading Related Entities

中详细介绍了如何加载相关实体
  

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

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