Hola Leandro, el libro de Patterns of Enterprise Application
Architecture de Fowler te tira 4 opciones para hacer Lazy Load: Lazy
Initialization, Virtual Proxy, Value Holder y Ghosts.
http://martinfowler.com/eaaCatalog/lazyLoad.html
Para colecciones Virtual Proxy me parece de lejos la opción más
elegante, porque el objeto del dominio ni se entera de que se está
cargando la colección por lazy load.
No se si era esto lo que buscabas o no, pero si querés te paso el
ejemplo del libro o alguna implementación mía.
Saludos,
Pedro
Leandro Tuttini escribió:
Hola que tal.
De seguro me meta en un lio con esta pregunta, pero queria realizarla
igualmente a ver que ideas surgen.
La idea es poder implementar un lazy load casero, o sea no importa si
se utiliza algun framework o no.
La idea es poder por ejemplo tener una clase Entidad, ejemplo de
"Region" y poder obtener sus "Instituciones" de esa zona, pudiendo
cargarse esto en el momento que se invoca.
Por supeusto este Lazy no necesariamente cargara desde un Provider a
la Base de Datos, podra leer tambien desde un xml, esto igual es
anecdotico, ya que lo resuelve el provider que se implemente, o mejor
el factory del provider.
Lo que no llego a terminar de cerrar es como se puede lanzar a la
ejecucion un atributo en una propiedad de una clase, y que este
atributo cargue la lista en la variable manejada por la entidad.
Se puede lograr esto? es muy complejo?
public class RegionEntity
{
private List<InstitucionEntity> _instituciones;
[Lazy(InstitucionesFactory)]
public List<InstitucionEntity> Instituciones
{
get{return _instituciones;}
set{_instituciones = value;}
}
}
Como veran en el ejemplo simple la idea seria lograr que al invocar la
propiedad, primeramente se llame al atributo y cargue la lista.
Bueno cualquier ayuda ser bienvenida.
Saludos
------------------------------------------------------------------------
Compartí video en la ventana de tus mensajes y también tus fotos de
Flickr.
Usá el Nuevo Yahoo! Messenger versión Beta.
Visitá http://ar.beta.messenger.yahoo.com/