Con NH è "molto semplice" gestire il life-cycle di un oggetto, ma a volte nasce l'esigenza di poter effettuare operazioni che esulano dalle semplici CRUD sulla singola entità.
Un esempio semplice è quello che mi è capitato oggi: cancellare, a fronte di una certa operazione dell'utente, tutti i record di una tabella che avevano particolari requisiti.
Che fare? Caricare tutte le entità in questione e poi cancellarle una ad una? naaaaaaaaaaaaaaaaahhhhhhhhhhhhhh!!!
La session di NH mette a disposizione il metodo Delete con quattro overload. Il primo, quello di cui sopra, per l'eliminazione del singolo oggetto. Gli altri tre permettono di specificare una query SQL o HQL per definire quali sono gli elementi che devono essere eliminati.
Per fare un semplice esempio, svuotare la tabella degli utenti:
session.Delete("from User");
Facile no?