我有以下情況我被卡住了。 我有一個名爲ContactAssociation的實體,其中包含屬性客戶端和聯繫人。 我必須獲得滿足某些條件的客戶端的所有聯繫人。 條件是: 每個客戶都有屬性BusinessEntities,它是BusinessEntity的集合,每個BusinessEntity都有一個BusinessLevel。 這是代碼,我肯定會做出這樣更容易理解:製作nhibernate做一個多對多的關係
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以獲得正確的結果?
謝謝您提前
P.S.
這裏是我的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>();
什麼是您的SQL查詢看起來像一個加入?這可能有助於我們弄清楚最終的結果是什麼。 – csano 2011-05-04 20:04:27
是BusinessLevel還是一個實體? – Vadim 2011-05-04 21:29:10
@Vadim是業務水平是一個實體 – Para 2011-05-05 05:51:56