2011-02-22 7 views
17

Estoy convirtiendo parte del código de Nhibernate 2.x a 3.0. Antes, estaba usando el complemento LINQ, para obtener soporte LINQ. Tengo entendido que en 3.0 se incluyó como una característica de primera clase. Entonces mi pregunta es, solía tener esto:Nhibernate 3 & LINQ

return new List<T>(session.Linq<T>().Where(where)); 

¿Qué significa eso con la nueva sintaxis? Revisé los documentos y el tutorial de nhib 3 y no vi nada sobre las cosas de linq, así que no pude encontrar un ejemplo para el patrón después.

+1

¿Por qué no escribir 'return session.Linq () .Where (where) .ToList()' en su lugar? –

+0

sí, solucionado eso. código antiguo –

Respuesta

33

En NHibernate 3 con LINQ hacer esto:

from u in session.Query<User>() 
where u.Username == username 
select u 

O

session.Query<User>().Where(u => u.Username == username) 

No estoy seguro si esto es lo que estás buscando.

EDITAR: Query<T> es un método de extensión. No olvide agregar el using NHibernate.Linq para poder usarlo.

+2

No veo ninguna. Consulta en mi objeto de sesión. ¿Me falta un uso o algo así? –

+5

NHibernate.Linq lo hizo. :) –

3

No hay una sintaxis nueva. Linq todavía está linq. El método llamado Linq en el antiguo proveedor se llama Query en el nuevo.

En lugar de la nueva lista (enumerable) puede usar enumerable.ToList() para evitar cargar cada objeto en la lista con una consulta SQL separada.