我有以下情况我被卡住了。我有一个名为 ContactAssociation 的实体,它具有(除其他外)属性客户端和联系人。我必须为满足某些条件的客户获取所有联系人。条件是:每个 Client 都有属性 BusinessEntities,它是 BusinessEntity 的集合,每个 BusinessEntity 都有一个 BusinessLevel。这是代码,我相信会让这更容易理解:
link.Session.QueryOver<ContactAssociation>(() => ca)
//.Fetch(asoc => asoc.Client)
.JoinAlias(() => ca.Client, ()=> client)
.Left.JoinQueryOver<BuEntry>(() => client.BuEntries, () => be)
.Where(() => client.ID == clientKey)
.Where(() => be.BuLevel.LevelNo > buLevel);
好的,所以我写了这样的东西,我一直收到一个错误,即找不到属性 BuLevel.LevelNo 但它在模型中
我尝试了标准,但我看到了相同的错误,只是它出现在 NHProfiler 而不是 Visual Studio 中,并且 Visual Studio 中有一个更神秘的错误。无论如何......我最终用 sql 查询解决了这个问题,但是我应该如何编写 QueryOver 和/或 Criteria 以获得正确的结果?
先感谢您
附言
这是我的 SQL 查询:
careTeamMembers = link.Session.CreateSQLQuery(@"select c.* from ContactAssociation ca
inner join Contact c
on ca.contactkey = c.contactkey
left join ContactBu cb
on cb.contactkey = c.contactkey
left join BuEntry be
on cb.entrykey = be.entrykey
left join BuLevel bl
on be.levelkey = bl.levelkey
where ca.clientkey = :clientkey
and bl.levelno > :level")
.AddEntity(typeof(Contact))
.SetInt32("clientkey", clientKey)
.SetInt32("level", buLevel)
.SetMaxResults(1000)
.List<Contact>();