是我的linq查询拉动它需要什么或一切?

时间:2011-02-22 11:44:09

标签: entity-framework entity-framework-4

我这样做:

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();

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

(首先使用ef4 ctp5代码)

2 个答案:

答案 0 :(得分:3)

尝试下载LinqPad,它会显示执行的SQL,以便您可以准确地看到发生了什么。

这是一个Linq查询和结果: LinqPad query results

这是相同的Linq查询以及执行的SQL: LinqPad query with SQL

这是一个非常好的工具,用于编写和优化Linq到EF和Linq到SQL查询。它也非常适合编写和测试.Net代码片段。

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

答案 1 :(得分:1)

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