Estoy tratando de devolver un SimpleQuery lista de las consultas de una sola tabla y la utiliza.
Puedo conseguir que esto funcione, el uso de

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

Sin embargo, esto es muy, muy, muy lento. Por lo tanto, id gustaría hacer algo como esto

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

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

Sin embargo puedo conseguir el SimpleQuery a trabajar. No puedo encontrar ninguna documentación que cubre este y estaba esperando a alguien, no sería capaz de ayudar.

Gracias

OriginalEl autor Gilbert | 2010-03-08

1 Comentario

  1. 23

    Tener una mirada en el NHibernate HQL documentación aquí.

    Supongo que a partir de su código, que usted está después de una consulta HQL para devolver todos los puestos de trabajo donde el trabajo.ServiceID en una lista de identificadores.

    Tal vez algo a lo largo de las líneas,

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

    Por CIERTO, ¿has oído hablar de la NHibernate Lambda Extensiones proyecto?
    A continuación es un ejemplo de la consulta de hacer uso de la mencionada biblioteca. Podría ser algo interesante para ver como una alternativa al uso de HQL.

    DetachedCriteria after =
        DetachedCriteria.For<Person>()
            .Add(SqlExpression.In<Person>(p => p.Name, 
              new string[] { "name1", "name2", "name3" }));
    Gracias por la respuesta. He editado mi consulta basada en su respuesta SimpleQuery<Trabajo> query = new SimpleQuery<Trabajo>( @»de Trabajo como j donde j.SecondName = (:nombre) y ServiceId en (:serviceIds)»); query.SetParameter(«serviceIds», id); query.SetParameter(«nombre», nombre); return new List<Trabajo>(consulta.Execute()); El único problema ahora es la matriz int de ids estoy pasando. El campo en la base de datos es de tipo int, si puedo usar EN cualquiera de los campos de cadena funciona bien y si me pasan un único valor de int funciona. ¿Cómo puedo pasar una matriz? Gracias
    Opps, mal llamada al método Trate de usar q.SetParameterList lugar
    También esto podría ser útil para usted nhforge.org/doc/nh/en/…
    Excelente, que hizo el truco. Muchas gracias 🙂

    OriginalEl autor Noel

Dejar respuesta

Please enter your comment!
Please enter your name here