【问题标题】:LINQ to SQL: How does EntitySet lazy load objects?LINQ to SQL:EntitySet 如何延迟加载对象?
【发布时间】:2010-09-02 06:40:54
【问题描述】:
我一直在尝试为我们的项目实现自定义 ORM,并且有兴趣了解 LINQ to SQL 或实体框架如何延迟加载对象。
我读了一些关于EntitySet 的文章,并意识到它有一个Load() 方法。有谁知道 Load 究竟是如何工作的?我假设它应该引用DataContext(或EF 中的ObjectContext)来加载请求的对象。
【问题讨论】:
标签:
.net
entity-framework
linq-to-sql
linq-to-entities
【解决方案1】:
没错。延迟加载仅在实体仍附加到上下文时才有效。它通常被实现为某个集合或对象顶部的代理,因此当您第一次访问代理时,它会加载对象或集合。
【解决方案3】:
谢谢。但我刚刚意识到代理与 POCO 对象一起使用,如果您使用设计器生成的代码,则不会生成代理。在这种情况下,我注意到一个指向 ObjectContext 的私有(或者可能是内部)字段。因此,如果需要,实体可以与 ObjectContext 对话以查询更多数据。