NHibernate Eager cargando objetos secundarios de varios niveles

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; }
}

Quiero consultar un pedido por ID y estoy 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 comprensiblemente no es la dirección del 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 cargará al hijo del niño? ¿Estas correlaciones de relaciones parecen correctas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta