isessionfactory fluently example nhibernate fluent-nhibernate

fluently - nhibernate download c#



NHibernate Eager cargando objetos secundarios de varios niveles (1)

Tengo una jerarquía de objetos, orden, contacto, dirección:

public class Order { public virtual Contact BillingContact { get; set; } } public class Contact { public virtual Address Address { get; set; } }

Deseo consultar un pedido por ID, y ansioso por cargar el contacto de facturación, junto con su dirección.

var criteria = DetachedCriteria.For<Order>() .SetFetchMode("BillingContact", FetchMode.Eager)

Este criterio ansioso carga el BillingContact, pero es comprensible que no la dirección de BillingContact. Si agrego:

.SetFetchMode("BillingContact.Address", FetchMode.Eager)

Esto no hace nada para ayudar.

También tenga en cuenta que estas relaciones son unidireccionales:

public OrderMap() { References(x => x.BillingContact) .Not.Nullable() .Cascade.All(); } public ContactMap() { HasOne(x => x.Address) .Cascade.All() .FetchType.Join(); } public AddressMap() { Map(x => x.Address1); }

¿Cómo puedo construir un objeto de criterio que cargue al hijo del niño? ¿Estas asignaciones de relación parecen correctas?


Creo que es posible que deba agregar un alias a BillingContact para permitir el acceso a su Dirección.

Algo como:

var criteria = DetachedCriteria.For<Order>() .CreateAlias("BillingContact", "bc") .SetFetchMode("BillingContact", FetchMode.Eager) .SetFetchMode("bc.Address", FetchMode.Eager)