Busqueda de Nombres en NHibernate

45 views
Skip to first unread message

Marvin Leopoldo Chay Gonzalez

unread,
Mar 21, 2013, 8:35:42 AM3/21/13
to nhibernat...@googlegroups.com
actualmente estoy realizando una búsqueda de esta manera:

//Busqueda de Cliente a travez de su nonmbre
        public static IList<Cliente> buscaNombre(string nombre)
        {
            IList<Cliente> cliente;
            using (NHibernate.ISession NHSession = SessionFactory.getNewSession())
            {
                try
                {
                    NHibernate.ICriteria query = NHSession
                    .CreateCriteria(typeof(Cliente))
                    .Add(Restrictions.Like("Nombre", "%" + nombre + "%"))
                    ;
                    cliente = query.List<Cliente>();
                }
                catch
                {
                    throw new Exception("Ocurrio un error al intentarse Conectar a la Base de datos");
                }
                finally
                {
                    NHSession.Close();
                }
            }
            return cliente;
        }

El problema esta cuando busco nombres de esta manera "Juan Lopez" (porque en la base de datos se encuentran en un solo campo) me carga todos los datos de la base de datos.

Alguien me puede ayudar con este problema.



Nestor Andres Rodriguez

unread,
Mar 21, 2013, 5:44:38 PM3/21/13
to nhibernat...@googlegroups.com
Hola,
 
Al utilizar una busqueda por nombre a traves de query.List<Cliente>() te van a venir muchos clientes.  Entonces no entiendo porque dices que no quieres que te traiga los clientes ?


2013/3/21 Marvin Leopoldo Chay Gonzalez <napol...@gmail.com>



--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a nhibernate-hisp...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Marvin Leopoldo Chay Gonzalez

unread,
Mar 22, 2013, 10:38:06 AM3/22/13
to nhibernat...@googlegroups.com
Porque en algunos casos voy a tener varios clientes con el mismo nombre, la diferencia esta en un documento que los identifica.
--

Marvin Chay

Nestor Andres Rodriguez

unread,
Mar 22, 2013, 12:57:36 PM3/22/13
to nhibernat...@googlegroups.com
Entonces la busqueda esta bien no?  si quieres que retorne solo UNO entonces agrega mas condiciones al filtro.  Que version de NHibernate estas usando, porque si es >= 3.0 te recomendaria a traves de QueryOver es mas sencillo. algo asi:
var cliente = session.QueryOver<Cliente>().where(c => c.name == @variablenombre && c.document_id = @variablesDocumentId).SingleOrDefault();


2013/3/22 Marvin Leopoldo Chay Gonzalez <napol...@gmail.com>

Marvin Leopoldo Chay Gonzalez

unread,
Mar 22, 2013, 8:31:14 PM3/22/13
to nhibernat...@googlegroups.com

Muchas gracias por la ayuda, lo he resuelto de esta manera:

public static IList<Cliente> buscaNombre(string nombre)
        {
            IList<Cliente> cliente;
            using (NHibernate.ISession NHSession = SessionFactory.getNewSession())
            {
                try
                {
                    cliente =
                    NHSession.QueryOver<Cliente>()
                    .Where(c => c.Nombre == nombre)
                    .List();
                }
                catch(Exception ex)
                {
                    throw new Exception("Ocurrio un error al intentarse Conectar a la Base de datos " + ex.ToString());
                }
                finally
                {
                    NHSession.Close();
                }
            }
            
            return cliente;
        }

Edgar Ramos

unread,
Mar 23, 2013, 9:13:37 AM3/23/13
to nhibernat...@googlegroups.com
Marvin, tambien sería bueno te des un salto por el historico de van de AlNet, y mires el tema del manejo de la session


Saludos


--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a nhibernate-hisp...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Saludos
Edgar
Reply all
Reply to author
Forward
0 new messages