实体框架:多个声明执行计划

时间:2011-03-01 05:32:03

标签: c# sql entity-framework iqueryable

我正在计划准备一些方法,这些方法在DB表中返回已经过滤的元素集合,然后对这些集合执行查询。 我想知道第一次过滤是作为单独的声明执行还是会加入。

e.g。

public IQueryable<Person> GetAlivePersons(){
    return db.Persons.Where(p => !p.IsDeceased);
}

public IQueryable<Person> GetElderPeople(){
    return GetAlivePersons().Where(p => p.Age > 75);
}

第二种方法会一次或两次击中DB吗?

由于

1 个答案:

答案 0 :(得分:2)

仅当您访问结果集合时,

IQueryable才在sql中翻译。 那是因为你的代码命中了DB一次。 This topic解释了这一点