Nhibernate HQL, где В запросе

Я пытаюсь возвратить список SimpleQuery, который запрашивает единственную таблицу и использует В. Я могу заставить это работать с помощью

return new List<Jobs>(
    ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);

Однако это действительно действительно, действительно замедляются. Таким образом, я хотел бы сделать что-то вроде этого

SimpleQuery<Job> query = 
    new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);

return new List<Job>(query.Execute());

Однако я не могу заставить SimpleQuery работать. Я не могу найти документацию, касающуюся этого, и надеялся, что кто-то там сможет помочь.

Спасибо

12
задан roufamatic 21 September 2010 в 21:00
поделиться

1 ответ

Посмотрите документацию NHibernate HQL здесь .

Судя по вашему коду, я предполагаю, что вам нужен HQL-запрос, чтобы вернуть все задания, для которых job.ServiceID указан в списке идентификаторов.

Может быть, что-нибудь в этом роде,

IQuery q = s.CreateQuery("from Job as j where j.ServiceId in (:serviceIds)");
q.SetParameterList("serviceIds", ids); 

Кстати, вы слышали о проекте NHibernate Lambda Extensions ? Ниже приведен пример запроса IN, выполненного с использованием упомянутой библиотеки. Возможно, стоит взглянуть на что-нибудь интересное в качестве альтернативы использованию HQL.

DetachedCriteria after =
    DetachedCriteria.For<Person>()
        .Add(SqlExpression.In<Person>(p => p.Name, 
          new string[] { "name1", "name2", "name3" }));
25
ответ дан 2 December 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: