实体框架:多个Where语句执行计划
我计划准备一些方法,这些方法返回数据库表中已过滤的元素集合,然后对这些集合执行查询。 我想知道第一个过滤是否会作为单独的语句执行,或者是否会被加入。
例如,
public IQueryable<Person> GetAlivePersons(){
return db.Persons.Where(p => !p.IsDeceased);
}
public IQueryable<Person> GetElderPeople(){
return GetAlivePersons().Where(p => p.Age > 75);
}
第二种方法会击中数据库一次还是两次?
谢谢
I'm planning on preparing some methods that returned me an already filtered collection of elements in a DB table, and then execute queries on those collections.
I'm wondering if the first filtering will be executed as a separate statement or will it be joined.
e.g.
public IQueryable<Person> GetAlivePersons(){
return db.Persons.Where(p => !p.IsDeceased);
}
public IQueryable<Person> GetElderPeople(){
return GetAlivePersons().Where(p => p.Age > 75);
}
Will the second method hit the DB once or twice?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
仅当您访问结果集合时,
IQueryable
才会翻译为 sql。那是因为你的代码命中了数据库一次。 本主题解释了这一点
IQueryable
is translated in sql only when you accessing result collection.That because your code hit DB once. This topic explains this point