2010-12-07 37 views
8

Estoy usando NH 3.0 y FNH 1.1 recompilado con NH3.NHibernate: no se puede cargar con éxito

Tengo un modelo de usuario en el que siempre quiero recuperar su perfil al cargarlo. Utilizo el proveedor de linq de NH3 pero no puedo usar su método Fetch (debido a mi repositorio que oculta NHibernate y devuelve un IQueryable y el hecho de que se llama a ToPagedList en la consulta, lo que me impide poner Fetch como la última llamada de la consulta)

En el usermap puse:

HasOne(x => x.Profile) 
    .Not.LazyLoad() 
    .Cascade.All(); 

Pero poner en OFF LazyLoad no ayuda. Jugué con el modo de búsqueda también.

Mi expectativa es que si defino este mapeo, ni siquiera tendré que decirle a Linq que quiero que se busque el perfil cuando se solicita la entidad de usuario. Linq debería honrar el mapeo, ¿no?

+1

hmmm ... Pensé que 1-a-1 siempre estaba ansioso ... de hecho, recuerdo NO poder cargar un 1-a-1. ¿Esto cambió con NH3? – dotjoe

+0

Mi referencia es NH Profiler. Veo 2 solicitudes, una para Usuario y otra para Perfil. Debo admitir que no lo miré cuando estaba usando NH2. –

Respuesta

3

Estoy teniendo este problema también, y desafortunadamente creo que es por diseño. El proveedor NHibernate 3.0 Linq utiliza HQL bajo las cubiertas, y HQL no respeta sus asignaciones a este respecto. Por ejemplo, si se hizo

session.createQuery ("de perfil"). Lista()

Usted haría solamente obtener una lista de todos los perfiles y su clase de usuario no se uniría incluso si su mapeo tiene outer-join = verdadero.

Si estaba utilizando el antiguo proveedor de NHibernate.Linq que utiliza la API de critera, o la API de criterios directamente:.

session.createCriteria() Lista()

que se obtendría respalde una lista de todos los perfiles restantes externos unidos a los usuarios, tal como lo solicitó su archivo de mapeo.

Ahora no sé por qué el proveedor de linq respaldado por HQL no respeta sus asignaciones (y si alguien sabe cómo evitar esto, publique), pero creo que es por eso que está viendo este comportamiento.

Cuestiones relacionadas