У меня следующая ситуация, я застрял.
У меня есть объект с именем ContactAssociation, который имеет (среди прочего) свойства Client и Contact.
Я должен получить все контакты для клиента, которые выполняют некоторые условия.
Условия:
У каждого Клиента есть свойство 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>();