0

使用:

  • .Net 4.0

  • 实体框架 4.3

如果我以这种方式查询 DBSet:

public DbSet<Reciept> Reciepts { get; set; }
Reciepts.Where(rec =>rec.Number == reciept.Number &&
                        rec.Project.ID == reciept.Project.ID);

是否会返回整个表,然后按我的查询过滤?

或者它是否以某种方式将其转换为 SQL(Linq2SQL?),并且只返回那些行?

4

1 回答 1

1

它只会返回过滤后的值。

在调试时,您始终可以通过将鼠标光标指向查询变量来检查生成的查询:

var query = Reciepts.Where(rec =>rec.Number == reciept.Number && rec.Project.ID == reciept.Project.ID);
// put breakpoint here and stop mouse cursor at a 'query' variable

SQL Server Profiler (http://msdn.microsoft.com/en-us/library/ms187929.aspx) 是另一个可以用来检查真正发送到数据库的好工具。我在使用 EF 开发时一直使用它。

于 2012-10-28T23:06:44.240 回答