Quote Originariamente inviata da alka Visualizza il messaggio
A mio avviso, non è corretto: dietro le quinte dovrebbe essere trattato esattamente come la connessione al DB.

Il nome scelto non è casuale: Context.

Infatti, dovrebbe implementare il pattern cosiddetto Unit Of Work, ovvero essere creato per racchiudere le operazioni che afferiscono al caricamento, modifica, eliminazione di entità, che possono poi essere confermate in toto tramite SaveChanges() oppure annullate allo stesso modo scartando l'oggetto (ovvero uscendo dal metodo che lo utilizza, senza salvare nulla).

Non mi risulta peraltro che quell'oggetto sia thread-safe, quindi crearlo in modalità Singleton e utilizzarlo ovunque, la stessa istanza, è pure "pericoloso".

Un approfondimento generale si può trovare in questo articolo, molto dettagliato.

L'uso "migliore" o "corretto" prescinde dal database che sta dietro: le regole valgono per SQL Server, Firebird, MySQL, ecc.

Ciao!
Sinceramente lo vedo limitante come sistema. Nel senso che sia con PHP che con JAVA, l'oggetto DB è comune. La famosa Unit of works è riferita alla singola transazione. A fronte di un pool di connessione ogni request ne utilizza una. Questo dovrebbe essere il senso dell ORM anche per evitare i tempi di handshake col DB.