Как я могу использовать отладчик VisualStudio 10 для проверки основного текста критериев nHibernate (3.1) - PullRequest
1 голос
/ 19 августа 2011

Под 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 Ответ

1 голос
/ 19 августа 2011

session.QueryOver () - это просто оболочка для ICriteria, которая имеет хорошую возможность отображаться в виде строки.Для доступа к базовым критериям используйте matchQuery.RootCriteria

...