In un thread su guisa si è un po parlato di costruttori e persistenza. Sempre continuando il discorso del repository, volevo dare la mia opinione su come i costruttori si legano al repository. Come anche Fowler dice, la costruzione di un oggetto non è pertinenza del repository, ma il repository ha il seguente scopo
Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.
Per questa ragione il ciclo di vita di un oggetto è il seguente: chiamando uno dei costruttori o un metodo factory si crea una nuova istanza, questa nuova istanza è transiente per utilizzare la notazione di Nhibernate. A questo punto il repository entra in gioco perché presenta all'utente una interfaccia collection-like, ovvero si comporta come un contenitore in memoria, internamente il repository dialoga con il layer di persistenza e quindi lo stato dell'oggetto diventa persistente, ma per il chiamante tutto questo è completamente trasparente. Una delle convenienze dei repository è che si possono creare repository solamente per le root degli aggreati in modo da impedire all'utilizzatore di andare a ricostruire direttamente oggetti interni di un aggretago. Una discussione approfondita è comunque fatta nel libro di Evans. Personalmente però non amo l'utilizzo di costruttori o metodi factory per effettuare la reconstitution di un oggetto, ma preferisco accentrare il tutto nel repository.
Alk.