NHibernate crea proxy a través de session.Load (), pero no a través de Linq o Criteria API

Tengo un problema extraño en mi proyecto actual. La carga perezosa para consultas no funciona. Cuando pregunto en una lista, nhibernate obtiene todas las asociaciones por separado.

Extraje partes pequeñas de la misma y la puse en una solución separada. Básicamente, lo que tengo ahora es una tabla de cuentas y una tabla de sincronización de cuentas. Ambos tienen un ID y una URL, mientras que el ID es solo un db-guid.

Mis clases son:

public class HippoAccount
{
    public virtual Guid Id { get; set; }
    public virtual string Url { get; set; }
    public virtual HippoAccountSync Sync { get; set; }
}

public class HippoAccountSync
{
    public virtual Guid Id { get; set; }

    public virtual string Url { get; set; }
    public virtual HippoAccount Account { get; set; }
}

Cuando ahora cargo un objeto a través de su guid:

var account = session.Load<HippoAccount>(accountId);
Console.WriteLine(NHibernateUtil.IsPropertyInitialized(account, "Sync"))

... vuelvefalse y la cuenta en sí es un proxy.

Pero al cargar una lista a través de los criterios API:

var account = (HippoAccount)session
    .CreateCriteria(typeof (HippoAccount))
    .Add(Restrictions.Eq("Id", accountId))
    .List()[0];

... la propiedadSync se inicializa (se inicia una segunda consulta de selección) y el objeto devuelto no es un proxy.

¿Es ese comportamiento predeterminado? ¿En qué me estoy equivocando?

El mapeo es:

<class name="HippoAccount" table="AllAccounts">
  <id name="Id" type="guid">
    <generator class="guid"/>
  </id>
  <property name="Url" />

  <many-to-one 
           class="HippoAccountSync"
           name="Sync"
           not-found="ignore"
           property-ref="Url">
    <column name="url" />
  </many-to-one>
</class>

<class name="HippoAccountSync"
       mutable="false"
       table="Accounts">

  <id name="Id" type="guid">
    <generator class="guid"/>
  </id>

  <property name="Url">
    <column name="serviceUri" />
  </property>

  <many-to-one class="HippoAccount"
               name="Account"
               property-ref="Url"
               not-found="ignore">

    <column name="serviceUri" />
  </many-to-one>

</class>

Respuestas a la pregunta(1)

Su respuesta a la pregunta