2011-01-28 22 views
7

Estoy usando NHibernate 3.0.0 y las nuevas características de propiedades perezosas. Sin embargo, en algunas consultas quiero cargar ansiosamente las propiedades y me gustaría que la consulta resulte en instancias de entidades no procesadas. También prefiero usar el proveedor de LINQ o QueryOver. Así que mis dos preguntas relacionadas con este son:NHibernate 3 propiedades perezosas y consultas ansiosas

  1. Sé que carga con ganas de propiedades se puede lograr en HQL con "ir a buscar todas las propiedades", pero es Es posible hacer lo mismo con el proveedor LINQ o QueryOver?
  2. Si ejecuto una consulta HQL con "buscar todas las propiedades", las entidades en el resultado están realmente cargadas, pero aún están representadas. ¿Hay alguna forma de evitar esto?

Saludos

+0

¿Cuál es el problema específico de tener entidades proxy? –

+1

La transmisión de la entidad que utiliza WCF no funcionará, por ejemplo. – Yhrn

Respuesta

4

Para la pregunta 1: La respuesta es no, 'buscar todas las propiedades' como se describe en http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties actualmente solo es compatible con HQL.

Recuerdo haber visto en el NH Google Discussions en alguna parte, no he podido encontrar el hilo. Actualizaré la respuesta si puedo encontrarlo hoy. Pero a partir de la versión 3.1 actual, solo está en HQL.

Para la pregunta 2: No sé si hay una manera de evitar esto, por lo general los transformo en DTO y serializo el DTO, no el NH Poco, cuando uso WCF. El enlace de Leonardo parece interesante y puede ser de ayuda.

+0

@Yhrn - Lo siento, amigo, no puedo encontrar el hilo en NHUsers para hacer con alguien que pregunta si estará en NH3 o versiones futuras. Sin embargo, descubrió que puede buscar las propiedades si las incluye en una proyección. – Phill

0

Puede utilizar esta http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/ para desactivar de carga perezosa de sus clases (sin proxies)
Se puede utilizar esta http://nhibernate.info/doc/nh/en/index.html#querycriteria-dynamicfetching a la carga ansiosa sus propiedades
O puede probar esta http://www.timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx y aún usar los proxies.

+1

La obtención de propiedades en su enlace tiene que ver con las relaciones, no columnas específicas. Como una carga lenta/carga ansiosa de la propiedad 'contenido' de una 'publicación'. Yhrn está hablando de http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties que no es compatible con nada que no sea HQL en este momento. – Phill

+0

Tienes razón Phill. Leí la pregunta demasiado rápido y respondí mal. Gracias. –

+0

@Phill Creo que tienes razón y que las respuestas a ambas preguntas son simplemente "no" (al menos por ahora, quién sabe qué pueden traer las futuras versiones). Si está seguro de eso, puede convertir su comentario en una respuesta y lo aceptaré. – Yhrn

Cuestiones relacionadas