0

我想我必须在这里遗漏一些非常明显的东西。我正在使用 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 对象,而不是代理,这解释了为什么延迟加载不起作用,但为什么我不会得到代理。配置表明代理已启用。

4

1 回答 1

0

经过相当多的探索,包括从头开始重新创建模型,这有助于新的解决方案,但不是原来的解决方案,我找到了解决方案。最后,模型中大约有 12 个实体没有被创建为代理,其余的都很好。似乎这些中的每一个,在迄今为止被遗忘的部分类中,都定义了一个“Friend Sub New”。删除了这个,一切都很好。所以我想要吸取的教训是第一步要摆脱课堂上的任何额外包袱。

于 2013-05-06T03:29:09.967 回答