Per chi utilizza o sta iniziando ad utilizzare un ORM, la problematica che si riscontra di frequente è quella di come implementare una Unit Of Work attraverso queste tecnologie.
La definizione di Unit Of Work è "Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems" [Fowler] e se vogliamo calarci in un ambiente ASP.NET possiamo riassumerla come tutto ciò che accade sui nostri oggetti e sul nostro lato di persistenza da quanto viene iniziata una richiesta ad una pagina (BeginRequest) a quando questa viene terminata (EndRequest).
Il tracking di ciò che sta accadendo nei vari ORM è definito dal Contesto di Persistenza, come per esempio la Session di Nhibernate o il DataContext di LINQ to SQL, e quindi è importante mantenere attivo il Contesto di Persistenza per tutta la durata delle nostre operazioni.
Volevo segnalarvi a tal proposito un link a questo articolo di Rick Strahl che parla di come implementare delle classi di Helper che vengono incontro a quello che (brevemente) ho detto sopra.....
http://www.west-wind.com/weblog/posts/246222.aspx
Buona lettura