Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
.net 当在父对象上结合使用include和where()语句时,实体框架将加载整个对象图_.net_Entity Framework_Relationship - Fatal编程技术网

.net 当在父对象上结合使用include和where()语句时,实体框架将加载整个对象图

.net 当在父对象上结合使用include和where()语句时,实体框架将加载整个对象图,.net,entity-framework,relationship,.net,Entity Framework,Relationship,好的,我设置了LazyLoadingEnabled=false!x.IsDeleted),它仍然返回父对象的整个对象图。您说“它正在做您告诉它做的事情”,但我只要求它返回父对象,而不是父对象及其所有嵌套子对象。与没有where()的include相比,我真的不知道我在哪里问这个问题。请你再解释一下,你说的“整个对象图”是什么意思?您看到加载的父级的哪一部分是您不期望的?EF将加载所有标量属性,并填充对象上下文中已经存在的任何导航属性(例如,Parent。Children将包含您使用相同上下文检索

好的,我设置了
LazyLoadingEnabled=falseinclude()
来加载我需要的相关对象。这(大部分)很好,但有一个例外。当包含一个父对象,后跟一个
where()
语句时,父对象将包含其整个对象图。不是我想要的

比如说

_currentEntity.Include(x => x.Parent).Where(x => x.ParentId == 1);
返回整个对象图,同时

_currentEntity.Include(x => x.Parent);
仅包括当前对象及其父对象

我的问题是,为什么实体框架如此愚蠢,或者我遗漏了一些重要的知识


谢谢

它在做你让它做的事。您告诉它获取所有父实体,以确保当前实体的ParentID为1(我怀疑它是这样做的)。检查由这两个queryshi生成的SQL语句,但不管我取
Where(x=>!x.IsDeleted)
,它仍然返回父对象的整个对象图。您说“它正在做您告诉它做的事情”,但我只要求它返回父对象,而不是父对象及其所有嵌套子对象。与没有
where()
的include相比,我真的不知道我在哪里问这个问题。请你再解释一下,你说的“整个对象图”是什么意思?您看到加载的父级
的哪一部分是您不期望的?EF将加载所有标量属性,并填充对象上下文中已经存在的任何导航属性(例如,
Parent。Children
将包含您使用相同上下文检索到的此父对象的所有子对象,它将在
ParentId
上匹配它们。例如
Parent
有childs1,childs2,孩子们都有自己的孩子。在这种情况下,如果我不请求,我会请求家长将这些孩子设置为null。现在,在上面的场景中,它们也被加载了。我确实使用相同的上下文加载其他孩子。因此,我在没有加载任何其他孩子的情况下,在它自己的上下文中进行了尝试,并得到了相同的结果。即使我说这个对象不包括任何子集合,父对象也包括它的子集合,以及它的子集合等等。