模型中的两个核心实体是:
以下是帐户和注册之间的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
}
我们有一个查询来查找前十名(accountid,registrationid) 匹配某个筛选条件(帐户中的表达式)并且是 按注册的两个字段排序
示例:
public class AccountRegistrationId
{
public Guid AccountId { get; set; }
public Guid RegistrationId { get; set; }
}
THE QUERY:
查询:
(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_
问题:多个左外连接注册表
有没有在注册时摆脱这些多连接?