Simple.Data - 如何将 WHERE 子句应用于连接表

Simple.Data - How to apply WHERE clauses to joined tables

我正在尝试使用 Simple.Data 作为我的 ADO,但是我 运行 遇到了一个问题,试图组合一个连接的查询几个 tables,然后根据非主要 tables.

中的值过滤结果

Scenario 是一个工作申请应用程序(但工作就像是在给定的一天完成的特定任务)。有3个相关的table,jobsapplicationsapplication_historyjobs table 中的每条记录可以有很多 applications,每个 applications 中有很多 application_history 条记录。在 application_history table 中,有一个 status 列,表示每个申请已发送、提供并最终被接受。

所以我想要查询 returns 所有已接受的未来工作申请;即 jobs table 中的 date 列在未来,application_history table 中有关联记录,其中状态列为 5(表示接受)。

如果这是普通的旧 SQL,我会使用这个查询:

SELECT A.* FROM application AS A
INNER JOIN application_history AS AH ON AH.application_id = A.id
INNER JOIN job AS J ON J.id = A.job_id
WHERE AH.status_id = 3 AND J.date > date('now')

但我想知道如何使用 Simple.Data 实现相同的目的。对于奖励积分,如果您可以先忽略 'job must be in the future' 这一步,那将有助于我了解发生了什么。

作为参考:Simple.Data documentation 特别是关于显式连接的部分。 你应该能够做这样的事情:

//db is your Simple.Data Database object

db.application
  .Join(db.application_history)
  .On(db.application.id == db.application_history.application_id)
  .Join(db.job )
  .On(db.Applications.job_id == db.job.id)
  .Where(db.application_history.status_id == 3 && db.job.date > DateTime.Now());

我不确定 Simple.Data 是否知道如何处理 Date 部分。