gpt4 book ai didi

sql - Linq to NHibernate 生成多个连接到同一个表

转载 作者:行者123 更新时间:2023-12-04 12:24:39 25 4
gpt4 key购买 nike

当我在我的 select 和 where 子句中引用同一个表时,linq to Nhibernate 生成两个连接,一个用于选择,一个用于 where。 IE。

from child in Session.Query<Child>()
where child.Parent.Name == "Bob"
select new Info
{
ParentAge = child.Parent.Age,
ChildName = child.Name
};

生成 SQL 如下:
Select this_.Name,
parent1.Age
From Child this_
left join Parent parent1 on child.ParentId = parent1.Id,
Parent parent2

Where child.ParentId = parent2.Id and parent2.Name = 'Bob'

我原以为我应该更像 SQL:
Select this_.Name,
parent1.Age
From Child this_
inner join Parent parent1 on child.ParentId = parent1.Id
Where parent1.Name = 'Bob'

有没有办法构造查询来获得这个?
有关系吗?

最佳答案

您可以通过使用透明标识符来阻止 NHibernate 执行此操作,以便您的查询如下所示:

from child in Session.Query<Child>()
let p = child.Parent
where p.Name == "Bob"
select new Info {
ParentAge = p.Age,
ChildName = child.Name
};

关于sql - Linq to NHibernate 生成多个连接到同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662049/

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