Ho un database precedente che sto mappando utilizzando NHibernate. Gli oggetti di interesse sono un account e un elenco di oggetti di notifica. Gli oggetti assomigliano:Caricamento lento non funzionante per la relazione molti a uno durante l'associazione a un campo non chiave utilizzando la proprietà ref
public class Notification
{
public virtual int Id { get; set; }
public virtual DateTime BatchDate { get; set; }
/* other properties */
public virtual Account Account { get; set; }
}
public class Account
{
public virtual int Id { get; set; }
public virtual string AccountNumber { get; set; }
/* other properties */
}
I file di mapping simile:
<class name="Account" table="Account" dynamic-update="true">
<id name="Id" column="AccountID">
<generator class="native" />
</id>
<property name="AccountNumber" length="15" not-null="true" />
<!-- other properties -->
</class>
<class name="Notification" table="Notification">
<id name="Id" column="Id">
<generator class="native" />
</id>
<!-- other properties -->
<many-to-one name="Account" class="Account" property-ref="AccountNumber" lazy="proxy">
<column name="AcctNum" />
</many-to-one>
Tuttavia, quando creo un criterio come
return session.CreateCriteria(typeof(Notification)).List<Notification>();
sto ottenendo un caso Select N + 1 in cui ogni account viene caricato anche se l'account non viene mai referenziato. Perché tutti gli account vengono caricati quando il numero uno è mappato come proxy pigro?
ottengo lo stesso problema, mi ricordo di aver visto un post somehwere dire molti-a-uno di proprietà Ref non può essere caricato in modo pigro , Non riesco a trovare la fonte. Questo era con NH 1.2 – Jafin