我想我必须在这里遗漏一些非常明显的东西。我正在使用 Visual Studio 2012,以 .Net 4.5 作为项目框架。我首先使用数据库从我的数据库中生成模型(从数据库更新模型,选择表)。我尝试使用默认实体生成器并明确选择 EF5.x DBContext 生成器,并且我确保在设计时在模型属性上启用延迟加载,并在运行时在上下文配置中启用延迟加载。尽管如此,我的属性拒绝延迟加载。
我设置了一个基本示例。表 A 与表 B 具有一对多关系。模型生成的代码在实体 A 中包含一个可覆盖/虚拟 ICollection 属性,用于此关系。然后我执行 Find() 来加载单个实体 A,并访问关系(例如,objA.EntityBList.Count()),但集合始终为空。如果我加载 entityB,它的 entityA 属性始终为 Nothing。
这应该像这样开箱即用吗?以前我主要使用 ObjectContext,所以这对我来说有点新。
在进一步测试中,我的简单示例似乎确实有效,因此问题似乎出在特定的 edmx 文件上。那么问题就变成了为什么 edmx 文件不会生成支持延迟加载的模型?我可以看到各种物化方法正在生成 POCO 对象,而不是代理,这解释了为什么延迟加载不起作用,但为什么我不会得到代理。配置表明代理已启用。