我一直在尝试为我们的项目实现自定义ORM,并且有兴趣了解LINQ to SQL或Entity Framework如何延迟加载对象。
我阅读了一些关于EntitySet
的内容,并意识到它有一个Load()
方法。有谁知道Load的工作原理是什么?我假设它应该引用DataContext
(或EF中的ObjectContext
)来加载请求的对象。
答案 0 :(得分:0)
完全。仅当实体仍附加到上下文时,延迟加载才有效。它通常在某个集合或对象的顶部实现为代理,因此第一次访问代理时它会加载对象或集合。
答案 1 :(得分:0)
这是一个article处理LINQ to SQL中的查询执行类型。
至于实体框架,这里是similar article。
答案 2 :(得分:0)
感谢。但我刚刚意识到代理与POCO对象一起使用,如果使用设计器生成的代码,则不会生成代理。在这种情况下,我注意到指向ObjectContext的私有(或可能是内部)字段。因此,如果需要,实体可以与ObjectContext通信以查询更多数据。