У меня есть объект person, который может иметь неограниченное количество первых имен. Итак, первые имена - это еще один объект.Вопрос о NHibernate Критерии
т.е.
человека --- имя
--- имя
--- имя
То, что я хочу сделать, это написать запрос nhiberate, с помощью которого вы получите меня, у кого есть определенные имена.
так что один запрос может найти кого-то, чьи имена являются alison, jane и philippa, а затем следующий запрос может найти кого-то, чьи имена являются alison и jane.
Я только хочу вернуть людей, у которых есть все имена, которые я ищу. До сих пор у меня есть
ICriteria criteria = session.CreateCriteria(typeof (Person));
criteria.CreateAlias("Names", "name");
ICriterion expression = null;
foreach (string name in namesToFind)
{
if (expression == null)
{
expression = Expression.Like("name.Value", "%" + name + "%");
}
else
{
expression = Expression.Or(
expression,
Expression.Like("name.Value", "%" + name + "%"));
}
}
if (expression != null)
criteria.Add(expression);
Но это возвращает каждого человека с ЛЮБОЙ из имен, которые я ищу, а не ВСЕ имена.
Может ли кто-нибудь помочь мне с этим? Благодаря!
хорошо, то вы получите SQL, где имя как «% JANE%» и имя как «% Филиппы%», который не делает действительно ли это имеет смысл? –
одно имя должно быть либо «philippa jane», либо «jane philippa» для этого - не одно имя «jane» и одно имя «philippa» .... –
Ok. Я должен научиться читать более внимательно. Я обновил ответ, чтобы отразить ваш sql выше. – asgerhallas