Porque no haces lo que te dice Rodrigo, y si hace lo que necesitas
investigate QueryOver con Joins (
http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx),
para evitar un Select 1+N debido al LazyLoad... pero eso una vez que hayas
entendido lo que estas haciendo.

Saludos,


El 11 de marzo de 2011 16:36, Augusto Ferriz <[email protected]>escribió:

> La imagen que viste es del DGV cuando lo consulto con el QueryOver a traves
> de esta consulta:
>
> ObtenerPorUnidad = sesion.QueryOver<Ayudantia>().Where(x => x.Campus ==
> Ud).List();
>
> Con esta consulta solo puedo sacar los datos del objeto Ayudantia por medio
> del nombre del campus que se manda via la variable "Ud"
>
> Intentando hacer lo que me dices se me ocurrio hacer esta fumada...
>
> var ObtenerPorUnidad = sesion.QueryOver<Ayudantia>().Where(x => x.Campus ==
> Ud).Select(ay => ay.Alumnos.Matricula);
>
> return ObtenerPorUnidad.List<Ayudantia>();
>
>
> Pero me sale este error
>
> No se controló NHibernate.QueryException
>   Message="could not resolve property: Alumnos.Matricula of:
> SAI.NH.BL.Ayudantia"
>   Source="NHibernate"
>   StackTrace:
>        en NHibernate.Persister.Entity.AbstractPropertyMapping.ToType(String
> propertyName) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Persister\Entity\AbstractPropertyMapping.cs:línea
> 42
>        en NHibernate.Persister.Entity.AbstractEntityPersister.ToType(String
> propertyName) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:línea
> 1751
>        en
> NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetType(ICriteria
> subcriteria, String propertyName) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaQueryTranslator.cs:línea
> 684
>        en NHibernate.Criterion.PropertyProjection.GetTypes(ICriteria
> criteria, ICriteriaQuery criteriaQuery) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\PropertyProjection.cs:línea
> 51
>        en NHibernate.Criterion.ProjectionList.GetTypes(ICriteria criteria,
> ICriteriaQuery criteriaQuery) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\ProjectionList.cs:línea
> 50
>        en
> NHibernate.Loader.Criteria.CriteriaQueryTranslator.get_ProjectedTypes() en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaQueryTranslator.cs:línea
> 221
>        en
> NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable
> persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor
> factory, ICriteria criteria, String rootEntityName, IDictionary`2
> enabledFilters) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaJoinWalker.cs:línea
> 43
>        en
> NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable
> persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria,
> String rootEntityName, IDictionary`2 enabledFilters) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaLoader.cs:línea
> 39
>        en NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList
> results) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:línea 1892
>        en NHibernate.Impl.CriteriaImpl.List(IList results) en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:línea 265
>        en NHibernate.Impl.CriteriaImpl.List[T]() en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:línea 276
>        en NHibernate.Criterion.QueryOver`1.List[U]() en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:línea 62
>        en
> NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver<TRoot>.List[U]() en
> d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:línea 201
>        en SAI.NH.BL.RepositorioAyudantia.ObtenerAyudantiaPorCampus(String
> Ud) en C:\Documents and Settings\augusto.ferriz\Mis documentos\Visual Studio
> 2008\Projects\SAI\SAI.NH.BL\RepositorioAyudantia.cs:línea 69
>        en SystemSAI.frmMenu.btnRECargarDatosUnidad_Click(Object sender,
> EventArgs e) en C:\Documents and Settings\augusto.ferriz\Mis
> documentos\Visual Studio 2008\Projects\SAI\SystemSAI\frmMenu.cs:línea 331
>        en System.Windows.Forms.Control.OnClick(EventArgs e)
>        en System.Windows.Forms.Button.OnClick(EventArgs e)
>        en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
>        en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
> button, Int32 clicks)
>        en System.Windows.Forms.Control.WndProc(Message& m)
>        en System.Windows.Forms.ButtonBase.WndProc(Message& m)
>        en System.Windows.Forms.Button.WndProc(Message& m)
>        en
> System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
>        en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&
> m)
>        en System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd,
> Int32 msg, IntPtr wparam, IntPtr lparam)
>        en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&
> msg)
>        en
> System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32
> dwComponentID, Int32 reason, Int32 pvLoopData)
>        en
> System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32
> reason, ApplicationContext context)
>        en
> System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason,
> ApplicationContext context)
>        en System.Windows.Forms.Application.Run(Form mainForm)
>        en SystemSAI.Program.Main() en C:\Documents and
> Settings\augusto.ferriz\Mis documentos\Visual Studio
> 2008\Projects\SAI\SystemSAI\Program.cs:línea 29
>        en System.AppDomain._nExecuteAssembly(Assembly assembly, String[]
> args)
>        en System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence
> assemblySecurity, String[] args)
>        en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>        en System.Threading.ThreadHelper.ThreadStart_Context(Object state)
>        en System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state)
>        en System.Threading.ThreadHelper.ThreadStart()
>   InnerException:
>
> Como les digo, investigo e investigo... mi pregunta es, realmente es
> posible
>
> Otra cosa que se me viene a la cabeza, es consultar la lista de ayudantia
> meterla en un For Each y sacar un dato que pueda usarlo para consultar una
> lista de alumnos y empatarla
> pero no se como sacar los datos de una lista
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>



-- 
Saludos,

Walter G. Poch
Sr. .Net Developer
--------------------------------------------
Cell: +54 (9 341) 3353273
[email protected]

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a