Grazie Sabrina per l'aiuto, penso che opterò per una soluzione mista: caricare solo un livello alla volta (quello che mi serve) ed il resto all'occorrenza.
Ti chiedo solo un altro piccolo aiuto per quanto riguarda il pattern lazy load che vorrei comunque implementare anche per altre classi.
Ponendo che la classe "Categoria" esponga la proprietà "Children" ( IList ) più o meno in questo modo:
private IList < CategoriaArticolo > _children;
public IList < CategoriaArticolo > Ordini
{
get
{
if _children == null)
{
_children = Utility.CaricaCategorieArticoli(this._idCategoriaArticolo);
}
return _children;
}
set
{
_children = value;
}
}
...
Tutto funzionerebbe, peccato però che la "Utility.CaricaCategorieArticoli(int ID)" si trova in un altro layer e non è visibile dalla classe "Articolo". Ci deve essere qualche soluzione utilizzando delle interfacce e/o dei delegate, potresti per cortesia indicarmi un esempio pratico?
Grazie, Alberto