Nhibernate Query和OrderBy导致在同一表上进行多个联接
||
该模型中的两个核心实体是:
帐户
注册
这是帐户和注册之间的fluentNH映射:
.Override<Account>(m =>
{
m.References(x =>
x.Registration).Cascade.All().Not.Nullable().Unique();
// unidirectional one-to-one association, unique will not allow multiple nulls
}
我们有一个查询来查找前10个(帐户,注册ID)
符合特定的过滤条件(根据帐户表示),并且
在注册时按两个字段排序
例:
public class AccountRegistrationId
{
public Guid AccountId { get; set; }
public Guid RegistrationId { get; set; }
}
查询:
查询:
(from r in _session.Query<Account>() select r)
.OrderBy(a => a.Registration.PatientVisit)
.OrderBy(a => a.Registration.AccountNumber)
.Where(a=>a.Registration.Mrn == \"Mrn 1234\")
.Select(a => new AccountRegistrationId{ AccountId = a.Id,
RegistrationId = a.Registration.Id
}
).ToArray();
产生的sql在帐户和之间有4个外部联接
注册:
select TOP ( 10 /* @p0 */ ) account0_.Id as col_0_0_,
registrati3_.Id as col_1_0_
from [Account] account0_
left outer join [Registration] registrati1_
on account0_.Registration_id = registrati1_.Id
left outer join [Registration] registrati2_
on account0_.Registration_id = registrati2_.Id
left outer join [Registration] registrati3_
on account0_.Registration_id = registrati3_.Id,
[Registration] registrati4_
问题:多个左外连接与注册表
一键投影
一键加入Where条件
两次按OrderBy标准联接(每个订单按一个联接)
无论如何,在注册时有没有摆脱这些多重联接的方法?
没有找到相关结果
已邀请:
0 个回复