Entity framework EF6只能从加载的上下文数据中工作

Entity framework EF6只能从加载的上下文数据中工作,entity-framework,Entity Framework,使用EF 6 rc 1 代码优先 启用延迟加载,并允许代理生成(默认值) 尝试访问导航属性时,我发现: -如果引用的对象已以某种方式加载到DbContext中,则将填充导航属性 -如果引用的对象尚未加载,则导航属性将保持空。没有对SQL Server数据库进行任何查询尝试 这适用于集合和对象。在所有情况下,我都已验证导航属性是否标记为虚拟 这是预期的行为吗?我已经搜遍了我能找到的每一篇文章,但没有找到对此的描述(请提供链接)。如果不是预期的行为,我会做错什么 谢谢大家! 编辑: 因为我不能发布我

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

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

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

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

谢谢大家!

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

结果表明,没有创建代理包装器的原因是某些类的默认构造函数标记为internal。只需将它们更改为protected,即可创建代理,从而启用延迟加载。虽然我发现这一点相当模糊,但这里有文档记录:

请给出一个类的示例。如果没有代码,这是不可能回答的,因为你只能描述你看到的东西,而不能描述你错过的东西。