gpt4 book ai didi

nhibernate - 为什么 Linq to Nhibernate 会产生外连接

转载 作者:行者123 更新时间:2023-12-03 09:36:17 25 4
gpt4 key购买 nike

我对 Linq to Nhibernate 使用外连接生成查询有疑问。

例如:

return Session.Linq<ClientContact>().Where(c => c.Client.Id = 13).ToList();

产生类似于以下的查询:

选择...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid(+)
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13

注意外部连接 this.clientid = client1.clientid(+)。嘘!

为了解决这个问题,我重新使用 Session.CreateCriteria。

return Session.CreateCriteria(typeof (ClientContact)).Add(Restrictions.Eq("Client.Id", clientId)).List<ClientContact>();

产生以下查询:

选择...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13

注意没有外部连接。clientid = client1.clientid。耶!

有人知道为什么会这样吗?

最佳答案

至少对于 SQL Server,使用 Fluent NH 的 not-null="true"Not.Nullable() 的多对一映射会导致获取操作以使用内部联接而不是左联接。尝试将其添加到 ClientContact 中的 Client 映射中。

关于nhibernate - 为什么 Linq to Nhibernate 会产生外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300733/

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