来自关系的子记录不加载(EF4.0,POCO)

时间:2010-08-23 17:54:38

标签: c# entity-framework-4

我有2个课程:用户 Booklink

        public class User
        {
            public int UserID { get; set; }
            public string Email { get; set; }
            public string Login { get; set; }
            public string Surname { get; set; }
            public string Name { get; set; }
            public int Points { get; set; }
            public string Password { get; set; }

            public IEnumerable<BookLink> BookLinks { get; set; }
        }

        public class BookLink
        {
            public int LinkID { get; set; }
            public int BookID { get; set; }
            public int UserID { get; set; }
            public DateTime EventDate { get; set; }

            public Book Book { get; set; }
            public User User { get; set; }

        }

我使用了新的EF4.0功能 - POCO。

问题:当我加载用户实体时,BookLinks属性为 NULL (Booklinks表中有一些子记录)。但其他字段(属性)加载正常,所有这些(Booklinks除外)都有来自数据库的值。

我从通用存储库接收对象,如下所示:

UsersRepository usersRepository = new UsersRepository();

            User user = usersRepository.FindByID(1);

FindByID方法就像这样实现

private ObjectSet<T> _entitySet;    
return _entitySet.AsQueryable().Where(predicate).SingeOrDefault();

用户实例中的导航属性Booklinks为NULL

我无法理解为什么我会看到这种行为。我如何自动加载子记录?

以下是EF设计师http://tinyurl.com/2ct45d5的截图(如果有帮助......)

1 个答案:

答案 0 :(得分:2)

延迟加载无法在POCO上运行,除非您声明关联virtual(您没有)并启用代理创建(默认为IIRC)。