Estoy seguro que esa parte que explicas, el framework la implementa, pero habrá algún bug que hace que la carga de las entidades asociadas se realice bajo otra conexión que no es posible cerrar.
Rectificando un poco la duda planteada, no importa si es por Lazy Load o no, ciertas entidades asociadas su carga se realiza bajo una nueva conexión.
Digamos que tenemos este modelo:
Código Java:
Ver originalclase Factura
Int id;
Datetime fechaRecibida
Entities.LineaFactura lineaFacturaAsoc; // digamos que no marque con Lazy Load esta.
clase LineaFactura
Int id;
Entities.Empresa empresa; // Digamos que no marque con Lazy Load esta.
Entities.FacturaList facturas = new Entities.FacturaList();
clase Empresa
Para este modelo digamos que quiero obtener un listado de facturas
Haciendo uso del framework (Cooperator) sería así:
Código Java:
Ver originalpublic Entities.FacturaList FacturasRecibidas()
{
try{
return Mappers.FacturaMapper.Instance().GetAll();
}catch(...)
{
...
}
}
cuando se hace la carga de la entidad LineaFactura de Cada Factura obtenida por supuesto se obtienen las Empresas (no estan marcadas con Lazy Load).
Para este caso, se abre una nueva conexion para la carga de la entidad Empresa relacionada a cada LineaFactura.
Que no se carguen por Lazy Load las entidades asociados lo hice para que comprendieran la situacion que afronto, aunque hay situaciones en las que sí tengo que dejar ciertas asociaciones o composiciones sin el Lazy Load.
en algunos casos, he tenido que dejar de hacer uso de las clases Mapper y llenar las listas mediante DataReader encerrados en directivas using, y claro que no hay problemas, pero es un proceso tedioso por lo que me decanté por deshabilitar el pooling.