EF6 仅延迟处理加载的上下文数据



Using EF 6 rc 1代码优先启用延迟加载并允许代理生成(默认值(。

尝试访问导航属性时,我发现:- 如果引用的对象已以某种方式加载到 DbContext 中,则将填充导航属性- 如果引用的对象尚未加载,则导航属性将保持 null。 不会尝试对 SQL 服务器数据库进行任何查询。

这适用于集合和对象。 在所有情况下,我都已验证导航属性是否标记为虚拟。

这是预期行为吗? 我已经浏览了我能找到的每篇文章,但没有找到对此的描述(请提供链接(。 如果不是预期的行为,我可能做错了什么?

谢谢!

编辑:因为我无法发布我拥有的课程,所以我试图将其重现为一个简单的示例,我很乐意发布。 但是,简单示例按预期工作。 我注意到工作示例和非工作示例之间的一个主要区别:我的非工作应用程序生成不是代理的实体。即使允许代理生成,并且我正在从新上下文(而不是创建它们的上下文(中检索这些对象。 我无法发布非工作代码,发布工作代码没有任何价值。 解释为什么不生成代理类的理论将是受欢迎的!

事实证明,未创建代理包装器的原因是某些类将默认构造函数标记为内部。 只需将它们更改为受保护即可创建代理,然后启用延迟加载。 虽然我发现这很晦涩难懂,但它记录在这里:http://msdn.microsoft.com/en-us/library/vstudio/dd468057(v=vs.100(.aspx

最新更新