Muy bien como se resolvió con los DTO.
El problema es que si es una entity compleja tendrá el problema del Select
N + 1 a menos que deshabilites el lazy en la definicion de tus DTO.
A mi parecer es mejor utilizar un HQL o QueryOver o la que desees por
ejemplo
este query llena una entidad "orden" utilizando un solo query
[Test]
public void Can_eagerly_load_order_aggregate_with_hql_query()
{
Order fromDb;
using (ISession session = SessionFactory.OpenSession())
{
string sql = "from Order o" +
" inner join fetch o.OrderLines" +
" inner join fetch o.Customer" +
" where o.Id=:id";
fromDb = session.CreateQuery(sql)
.SetGuid("id", _order.Id)
.UniqueResult<Order>();
}
Assert.IsTrue(NHibernateUtil.IsInitialized(fromDb.Customer));
Assert.IsTrue(NHibernateUtil.IsInitialized(fromDb.OrderLines));
}
El articulo completo puedes revisarlo aqui
http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx
Saludos
El 19 de diciembre de 2012 13:04, Carlos Bustos <[email protected]
> escribió:
> Hola.
> El problema que estas teniendo es porque tus grafos tiene relaciones
> bidireccionales. Por ej. Si tenes una Factura y sus lineas tendrias algo asi
>
> public class Factura {
> public IList<FacturaLinea> Lineas {get;set;}
> }
>
> public class FacturaLinea {
> public Factura Factura {get;set;}
> public single Precio {get;set;}
> }
>
> Con eso podes navegar desde Factura a sus lineas y desde las lineas podes
> acceder a la factura.
> Lo que yo hice fue cortar la relacion bidireccional y dejar algo asi:
>
> public class FacturaDTO {
> public IList<FacturaLineaDTO> Lineas {get;set;}
> }
>
> public class FacturaLineaDTO {
> public single Precio {get;set;}
> }
>
> Con esto podes navegar solo desde FacturaDTO hacia FacturaLineaDTO.
> FacturaLineaDTO
> no tiene una referencia a FacturaDTO .
> De esta manera WCF no tiene problemas para serializar los objetos
>
> No se si es la mejor manera, pero asi lo hice yo.
>
> Saludos
>
>
> by Carlos Bustos
> ------------------------------
> *From:* Luciano <[email protected]>
> *To:* [email protected]
> *Cc:* Carlos Bustos <[email protected]>;
> [email protected]
> *Sent:* Wednesday, December 19, 2012 10:33 AM
> *Subject:* Re: [NHibernate-Hispano] NHibernate + WCF + Relación
> Bidireccional
>
> Hola de nuevo yo :S
>
> Estuve buscando por todos lados como implementar los DTO para solucionar
> el problema de la redundancia cíclica y no pude dar con la solución.
>
> Me podrías explicar como encarar el problema?
>
> Gracias
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano