【发布时间】:2011-08-01 16:29:36
【问题描述】:
考虑一个普通的 Linq 表达式将是这样的:
(这只是一个让事情更容易理解的示例)
IQueryable<Person> personQuery= (from ppl in PersonContext
select ppl).ASQueryable();
List<Person>personList = personQuery.where(x => x.age==13).ToList();
因此,如果我决定将 linq 查询的第一部分放在存储过程中,
事情会变成这样。
IQueryable<Person> personQuery= PersonContext.sp_RetrievePerson().ASQueryable();
List<Person> personList = personQuery.where(x => x.age==13).ToList();
所以对于这个问题,我相信第一种方法只在调用 toList() 时发送 sql 调用。
换句话说,发送给sql执行的查询将是
Select * from Person where age=13
但是对于方法2,这个查询会被发送多少次执行呢?
如果只发送 1 次,调用存储过程是否会变得多余,因为存储过程以执行速度更快而著称,发送到 sql 的查询会是什么样子?
【问题讨论】:
标签: c# sql-server linq-to-entities