相关疑难解决方法(0)

NHibernate - 左连接

我有以下两个表:

作业 AreaID,JobNo(复合键)

记录 LogID,AreaID,JobNo

我需要获得所有没有与之关联的日志的作业.在SQL中我可以这样做:

SELECT Jobs.AreaID,
       Jobs.JobNo
FROM   Jobs
       LEFT JOIN Logs
           ON Jobs.AreaID = Logs.AreaID
           AND Jobs.JobNo = Logs.JobNo
WHERE  Logs.LogID is null
Run Code Online (Sandbox Code Playgroud)

但我不知道如何用NHibernate来实现这一目标.任何人都可以提供任何指示吗?

这是我的映射:

<class name="Job" table="Jobs">
    <composite-key name="Id">
        <key-property name="JobNo"/>
        <key-many-to-one name="Area" class="Area" column="AreaID"/>
    </composite-key>
</class>

<class name="Log" table="Logs">
    <id name="Id" column="LogID">
        <generator class="identity"/>
    </id>
    <property name="JobNo"/>
    <many-to-one name="Area" class="Area" column="AreaID"/>
</class>
Run Code Online (Sandbox Code Playgroud)

谢谢

更新

好的,我略微修改了诺西拉的答案,现在正在做我想要的事情:

Log logs = null;

return session.QueryOver<Job>()
    .Left.JoinAlias(x => x.Logs, () => logs)
    .Where(x => logs.Id == null)
    .List<Job>();
Run Code Online (Sandbox Code Playgroud)

我还必须将此添加到我的Job映射中:

<bag …
Run Code Online (Sandbox Code Playgroud)

nhibernate join left-join outer-join

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

join ×1

left-join ×1

nhibernate ×1

outer-join ×1