我有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的截图(如果有帮助......)
答案 0 :(得分:2)
延迟加载无法在POCO上运行,除非您声明关联virtual
(您没有)并启用代理创建(默认为IIRC)。