使用 EF 6 rc 1 Code first 启用延迟加载并允许生成代理(默认值)。
在尝试访问导航属性时,我发现: - 如果引用的对象已经以某种方式加载到 DbContext 中,则导航属性将被填充 - 如果引用的对象尚未加载,则导航属性将保持为空。不对 SQL Server DB 进行任何查询尝试。
这适用于集合和对象。在所有情况下,我都验证了导航属性被标记为虚拟。
这是预期的行为吗?我已经搜索了我能找到的每一篇文章,但没有找到对此的描述(请提供链接)。如果不是预期的行为,我会做错什么?
谢谢!
编辑:因为我不能发布我拥有的课程,所以我试图将其复制到一个简单的示例中,我会很乐意发布。然而,这个简单的例子按预期工作。我注意到工作示例和非工作示例之间的一个主要区别:我的非工作应用程序生成不是代理的实体。即使代理生成是允许的,并且我正在从新的上下文(而不是创建它们的上下文)中检索这些对象,这也是如此。我不能发布非工作代码,发布工作代码没有任何价值。解释为什么没有生成代理类的理论将受到欢迎!