none
Como tomar datos de Ilist retornada usando NHibernate RRS feed

  • Pregunta

  • Buen dia

    Estoy comenzando con Nhibernate y tengo un problema, cuando ejecuto el siguiente metodo el me retorna en el :

    var id = Query.List()[0];

    un select producto de un procedimiento almacenado en SQL SERVER, sin embargo entiendo que el valor int es el row de donde consulto la informacion pero lo que yo necesito es tomar el valor de una columna de ese list no se si hace por index o por alias 

    Aqui el metodo:

    try
                    {
                        using (ISession se = NHibernateHelper.OpenSession())
                        {
                            var Query = se.CreateSQLQuery("EXEC rgstraPrtrno @nmbrePrtrno=:nmbrePrtrno, @nmbreDoc=:nmbreDoc," +
                                                          "@autor=:autor, @pregunta=:pregunta");
                            Query.SetString("nmbrePrtrno", model.preturnos.nmbrePrtrno);
                            Query.SetString("nmbreDoc", model.preturnos.nmbreDcmnto);                        
                            Query.SetString("autor", Environment.UserName);
                            Query.SetString("pregunta", model.preguntas.prgnta);
    
                            var id = Query.List()[0];
    
                            if (Convert.ToInt32(id) > 0)
                            {
                                
                            }
    
                            return RedirectToAction("Index", "Preturnos", new { idPrtrno = id });
                        }
                    }

    Agradezco su colaboracion.

    lunes, 31 de octubre de 2016 18:45

Todas las respuestas

  • hola

    el procedure que ejecutas que info retorna? porque si es un valor simple del id podrias usar el

     var id = Session.CreateSQLQuery(query)
                    .SetString("nmbrePrtrno", model.preturnos.nmbrePrtrno);
                    .SetString("nmbreDoc", model.preturnos.nmbreDcmnto);                        
                    .SetString("autor", Environment.UserName);
                    .SetString("pregunta", model.preguntas.prgnta);
                    .UniqueResult<int>();

    esto si es que el procedure retornar un unico valor simple, un solo campo y unico registro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 31 de octubre de 2016 19:24
  • Hola Leandro,

    retorna un registro con dos campos, no he sido capaz de tomar el valor del segundo campo.

    lunes, 31 de octubre de 2016 19:38
  • hola

    aconsejaria que la query la mapees a una clase

     var result = Session.CreateSQLQuery(query)
                    .SetString("nmbrePrtrno", model.preturnos.nmbrePrtrno);
                    .SetString("nmbreDoc", model.preturnos.nmbreDcmnto);                        
                    .SetString("autor", Environment.UserName);
                    .SetString("pregunta", model.preguntas.prgnta);
                    .SetResultTransformer(Transformers.AliasToBean(typeof(xxClass)))
                    .List<xxClass>();

    por supuesto crea una clase donde las propiedades coincidan con las columnas en nombre y tipo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 31 de octubre de 2016 21:27