延迟加载不使用使用EF5.x DBContext Generator生成的实体

时间:2013-05-05 16:48:44

标签: entity-framework-5 lazy-loading

我想我必须遗漏一些非常明显的东西。我正在使用visual studio 2012,其中.Net 4.5作为项目框架。我首先使用datbase从我的数据库生成模型(从数据库更新模型,选择表)。我已经尝试使用默认实体生成器并显式选择EF5.x DBContext生成器,并且我确保在设计时和运行时的上下文配置中对模型属性启用了延迟加载。尽管如此,我的属性仍然拒绝延迟加载。

我建立了一个基本的例子。表A与表B具有一对多的关系。由模型生成的代码在实体A中包含用于该关系的可覆盖/虚拟ICollection属性。然后,我执行Find()以加载单个实体A,并访问该关系(例如,objA.EntityBList.Count()),但该集合始终为空。如果我加载entityB,则其entityA属性始终为Nothing。

这应该是开箱即用吗?以前我主要使用ObjectContext,所以这对我来说有点新鲜。


在进一步测试时,似乎我的简单示例确实有效,因此问题似乎与特定的edmx文件有关。那么问题就变成为什么edmx文件不能生成支持延迟加载的模型?我可以看到各种物化方法正在生成POCO对象,而不是代理,这解释了为什么延迟加载不起作用,但为什么我不能获得代理。配置表明代理已启用。

1 个答案:

答案 0 :(得分:0)

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

相关问题