Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 5 延迟加载不使用使用EF5.x DBContext生成器生成的实体_Entity Framework 5_Lazy Loading - Fatal编程技术网

Entity framework 5 延迟加载不使用使用EF5.x DBContext生成器生成的实体

Entity framework 5 延迟加载不使用使用EF5.x DBContext生成器生成的实体,entity-framework-5,lazy-loading,Entity Framework 5,Lazy Loading,我想我一定错过了一些非常明显的东西。我正在使用visual studio 2012,以.Net 4.5作为项目框架。我首先使用datbase从数据库生成一个模型(从数据库更新模型,选择表)。我尝试使用默认的实体生成器,并显式选择EF5.x DBContext generator,我确保在设计时在模型属性上启用lazyloading,在运行时在上下文配置中启用lazyloading。尽管如此,我的属性拒绝延迟加载 我举了一个基本的例子。表A与表B之间存在一对多关系。模型生成的代码在实体A中为此关系

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

我举了一个基本的例子。表A与表B之间存在一对多关系。模型生成的代码在实体A中为此关系包含一个Overridable/virtual ICollection属性。然后我执行Find()加载单个实体a,并访问关系(例如objA.EntityBList.Count()),但集合始终为空。如果我加载entityB,它的entityA属性总是空的

这应该像这样开箱即用吗?以前我主要使用ObjectContext,所以这对我来说有点陌生



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

经过一段时间的探索,包括从头开始重新创建模型,这在新解决方案中有所帮助,但在原始解决方案中没有,我找到了解决方案。最后,模型中大约有12个实体没有被创建为代理,其余的都很好。似乎在迄今为止被遗忘的部分类中,每一个都定义了一个“新朋友”。去掉这个,一切都很好。因此,我想我们应该吸取的教训是,作为第一步,摆脱课堂上附加的任何额外负担