Sono un newbie totale a Entity Framework e ASP.Net MVC, avendo imparato per lo più da tutorial, senza avere una profonda conoscenza di entrambi. (Io ho esperienza su .Net 2.0, ADO.Net e WebForms)Entity Framework - Come dovrei esempio la mia oggetto "Entità"
Il mio dubbio attuale deriva dal modo in cui sto instancing miei oggetti entità.
Fondamentalmente io sto facendo questo nei miei controllori:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
che sto facendo in questo modo perché ho trovato in qualche blog MSDN che sembrava abbastanza autorevole per me che ho assunto questo era un modo corretto .
Tuttavia, mi sento piuttosto inopportuno in merito. Anche se mi fa risparmiare un sacco di codice, io sono abituato a fare:
using (NorthWindEntities db = new NorthWindEntities() {
}
in ogni singolo metodo che ha bisogno di una connessione, e se questo metodo chiama altri che avrò bisogno, che passerà db come un parametro per loro. Ecco come ho fatto tutto con i miei oggetti di connessione prima che esistesse Linq-to-SQL.
L'altra cosa che mi mette a disagio è che NorthWindEntities implementa IDisposable, che per convenzione significa che dovrei chiamare il metodo Dispose(), e non lo sono.
Cosa ne pensi di questo?
È corretto istanziare l'oggetto Entità come sto facendo? Dovrebbe occuparsi delle sue connessioni aprendole e chiudendole per ogni domanda?
Oppure devo smaltirlo in modo esplicito con una clausola using()?
Grazie!
Ok, questo ha senso. Ora, la domanda è ... Sto facendo le cose in modo errato? Ho davvero bisogno di disporre dell'oggetto Entities? Cosa succede se non lo faccio? Devo "perdere" le connessioni a SQL Server? –
ObjectContext.Dispose non fa molto (vedi Reflector). Ma è ragionevole presumere che potrebbe cambiare e tu * dovresti * eliminarlo. –