我的linq查询只是拉动它需要的东西还是所有东西?

问题描述 投票:2回答:2

我做这样的事情:

var src = dbContext.Set<Person>().Where(o => o.LastName.StartsWith(search));
var page = src.OrderBy(u => u.Id).Skip((page - 1) * pageSize).Take(pageSize);
var count = src.Count();

ef是否从数据库中提取所有内容,查询之后是否?我怎么知道的?有什么方法可以找到这个?

((首先使用ef4 ctp5代码)

c# entity-framework entity-framework-4
2个回答
1
投票

您正在使用的调用都不是To*运算符(例如ToList),因此所有方法调用都将转换为SQL并在数据库中执行。但是,Count运算符会被立即求值,您可能应该将该分配延迟到实际需要该值的位置。一旦迭代,其他变量将被求值。


3
投票

尝试下载LinqPad,它将向您显示已执行的SQL,因此您可以准确了解正在发生的情况。

这是Linq查询,结果:“

以下是与执行的SQL相同的Linq查询:“使用SQL的LinqPad查询”“ >>

这是用于编写和优化Linq到EF和Linq到SQL查询的非常好的工具。这对于编写和测试.Net代码段也非常有用。

此工具为我节省了很多时间,仅仅是因为您不需要启动调试器!这是我多年来发现的最有用的.Net工具。

© www.soinside.com 2019 - 2024. All rights reserved.