gpt4 book ai didi

c# - QueryOver - 向 Join 添加附加条件

转载 作者:行者123 更新时间:2023-11-30 18:01:00 25 4
gpt4 key购买 nike

我对 NHibernate 和 QueryOver 很陌生,我无法让 NHibernate 生成我需要的 SQL。

我需要进行联接并有一个额外的条件,这样我就可以避免从要联接的表中获取大量数据。

我从 QueryOver 收到的 SQL 是:

SELECT * FROM adresse this_ 
left outer join r580_test.afvigelse remarkalia1_ on this_.id=remarkalia1_.adrid
left outer join r580_test.afvigelseklagepunkter remarkcomp5_ on remarkalia1_.id=remarkcomp5_.afvigelseid
left outer join r580_test.klagepunkter complainta2_ on remarkcomp5_.klagepunktid=complainta2_.id
WHERE this_.id = 16633 and remarkalia1_.dato between '2009-03-13 00:00:00' and '02-03-2012 16:34:35'

我想要的是这个(第一个左外连接的日期之间的日期已移至末尾):

SELECT * FROM adresse this_ 
left outer join r580_test.afvigelse remarkalia1_ on this_.id=remarkalia1_.adrid and remarkalia1_.dato between '2009-03-13 00:00:00' and '02-03-2012 16:34:35'
left outer join r580_test.afvigelseklagepunkter remarkcomp5_ on remarkalia1_.id=remarkcomp5_.afvigelseid
left outer join r580_test.klagepunkter complainta2_ on remarkcomp5_.klagepunktid=complainta2_.id
WHERE this_.id = 16633

我的 QueryOver 看起来像这样:

adr = session.QueryOver<Address>()
.Where(x => x.Id == 16633)
.JoinQueryOver<Remark>(y => y.Remarks).Where(y => y.Created > DateTime.Now.AddDays(-14))
.JoinAlias(y => y.RemarkComplaint, () => complaintAlias, JoinType.LeftOuterJoin)
.SingleOrDefault();

有人知道如何解决这个问题吗?

最佳答案

joinqueryover 有几个重载 - 我相信你想要这样的东西:

Remark remark = null;
adr = session.QueryOver<Address>()
.Where(x => x.Id == 16633)
.JoinQueryOver<Remark>(y => y.Remarks, () => remark, y => y.Created > DateTime.Now.AddDays(-14))
.JoinAlias(y => y.RemarkComplaint, () => complaintAlias, JoinType.LeftOuterJoin)
.SingleOrDefault();

在这种情况下,第三个参数是 withClause,我相信它将对连接添加限制。

关于c# - QueryOver - 向 Join 添加附加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com