实体框架:多个Where语句执行计划

发布于 2024-10-19 13:36:25 字数 375 浏览 0 评论 0原文

我计划准备一些方法,这些方法返回数据库表中已过滤的元素集合,然后对这些集合执行查询。 我想知道第一个过滤是否会作为单独的语句执行,或者是否会被加入。

例如,

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮倦 2024-10-26 13:36:25

仅当您访问结果集合时,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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文