Как я могу использовать отладчик VisualStudio 10 для проверки основного текста критериев nHibernate (3.1)
Под Windows у меня есть код, подобный следующему:
var active_ids = QueryOver.Of<Members>()
.Where(m => m.HasAccess);
Я обнаружил, что если я сломаю отладчик после этой строки и введите
? active_ids.criteria отображается следующее:
{IsApproved = True}
а также
var namematch = Restrictions.Disjunction();
namematch.Add(Restrictions.Where<Members>(m => m.FirstName.IsInsensitiveLike(name.AsStartsWith())));
namematch.Add(Restrictions.Where<Members>(m => m.LastName.IsInsensitiveLike(name.AsStartsWith())));
namematch.Add(Restrictions.Where<Members>(m => m.LastName.IsInsensitiveLike(("-" + name).AsContains())));
Я обнаружил, что если я сломаю отладчик после этой строки и введите
? namematch.criteria отображается следующее:
Count = 3
[0]: {FirstName ilike bak%}
[1]: {LastName ilike bak%}
[2]: {LastName ilike %-bak%}
Тем не менее, когда у меня есть очень сложный запрос, похожий на:
var matchQuery = session.QueryOver<Member_Graph>()
.WithSubquery.WhereProperty(vg => vg.MemberId).In(memberlist)
.Where(approved_members)
.JoinQueryOver<Trainers_Graph>(t => t.trainers)
.Where(namematch)
.Select(t => t.trainers);
Тем не менее, когда я набираю? MatchQuery
"NHibernate..." не содержит определения "критериев", и не найдено метода "критериев" расширения, принимающего первый аргумент типа... (вы пропустили директиву using или ссылку на сборку?)
Итак, с помощью отладчика Visual Studio, как я могу перечислить полные критерии, которые nHibernate генерирует для matchQuery
1 ответ
session.QueryOver() - это просто оболочка для ICriteria, которая имеет прекрасную возможность отображаться в виде строки. Для доступа к основным критериям используйте matchQuery.RootCriteria