Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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 4 EF DbContext.Set<;T>;仅过滤记录_Entity Framework 4 - Fatal编程技术网

Entity framework 4 EF DbContext.Set<;T>;仅过滤记录

Entity framework 4 EF DbContext.Set<;T>;仅过滤记录,entity-framework-4,Entity Framework 4,我是EF的新手,所以现在我正在使用4.2,我只是想知道什么是最好的方法,可以限制EF只加载过滤数据,而不是从数据库中提取所有数据,然后在其上应用过滤器 我可以看到DbContext.Set()或DbContext.Set().AsQueryable();不确定“Where”函数,但它似乎是基于相同的原理工作的,即已加载任何给定表的所有数据,然后对其应用过滤器这不是一个重大的性能影响吗?还是我在这里遗漏了什么?我不希望EF从表中获取所有数据,但只获取一个经过筛选的数据。怎么办 谢谢Linq查询被转

我是EF的新手,所以现在我正在使用4.2,我只是想知道什么是最好的方法,可以限制EF只加载过滤数据,而不是从数据库中提取所有数据,然后在其上应用过滤器

我可以看到DbContext.Set()或DbContext.Set().AsQueryable();不确定“Where”函数,但它似乎是基于相同的原理工作的,即已加载任何给定表的所有数据,然后对其应用过滤器这不是一个重大的性能影响吗?还是我在这里遗漏了什么?我不希望EF从表中获取所有数据,但只获取一个经过筛选的数据。怎么办


谢谢

Linq查询被转换为SQL,因此如果您在查询中使用.Where(),它应该在db站点上执行,而不是在您的应用程序中执行。请注意,如果您执行类似.ToList()/.ToArray()的操作,然后尝试在上面应用.Where(),则过滤将在客户端站点上进行,因为.ToList()将在应用过滤器之前强制执行查询在查询中,它应该在db站点上执行,而不是在应用程序中执行。请注意,如果您执行类似.ToList()/.ToArray()的操作,然后尝试在上面应用.Where(),则过滤将在客户端站点上进行,因为.ToList()将在应用过滤器之前强制执行查询在查询中,它应该在db站点上执行,而不是在应用程序中执行。请注意,如果您执行类似.ToList()/.ToArray()的操作,然后尝试在其上应用.Where(),则过滤将在客户端网站上进行,因为.ToList()将在应用过滤器之前强制执行查询。@Pawel IQueryable query=_context.Set();如果(filter!=null){query=query.Where(filter);}//在您可以看到的地方,它已经加载了所有数据。因此,如果i_context.Set().Where(filter);那么这就足够了?@Pawel谢谢你清理它我只是确认一下sql分析器它确实按照你说的方式附加了where子句。无法标记它的答案。CheeselInq查询被转换为SQL,因此如果在查询中使用.Where(),则应该在db站点上执行,而不是在应用程序中执行。请注意,如果您执行类似.ToList()/.ToArray()的操作,然后尝试在其上应用.Where(),则过滤将在客户端网站上进行,因为.ToList()将在应用过滤器之前强制执行查询。@Pawel IQueryable query=_context.Set();如果(filter!=null){query=query.Where(filter);}//在您可以看到的地方,它已经加载了所有数据。因此,如果i_context.Set().Where(filter);那么这就足够了?@Pawel谢谢你清理它我只是确认一下sql分析器它确实按照你说的方式附加了where子句。无法标记它的答案。干杯