Soy un novato total en Entity Framework y ASP.Net MVC, habiendo aprendido principalmente de tutoriales, sin tener una comprensión profunda de ninguno de ellos. (Tengo experiencia en .Net 2.0, ADO.Net y WebForms)Entity Framework - Cómo debería instanciar mi objeto "Entidades"
Mi duda actual proviene de la forma en que estoy instalando mis objetos Entities.
Básicamente estoy haciendo esto en mis controladores:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
lo estoy haciendo así porque lo encontré en algún blog de MSDN que parecía autoridad suficiente para mí que asumí esto era una manera correcta .
Sin embargo, me siento bastante fácil al respecto. A pesar de que me ahorra mucho código, yo estoy acostumbrado a hacer:
using (NorthWindEntities db = new NorthWindEntities() {
}
En cada método único que necesita una conexión, y si ese método llama a otros que necesitaré, ya pasará db un parámetro para ellos. Así es como hice todo con mis objetos de conexión antes de que existiera Linq-to-SQL.
La otra cosa que me inquieta es que NorthWindEntities implementa IDisposable, que por convención significa que debería llamar a su método Dispose(), y no lo estoy.
¿Qué opina sobre esto?
¿Es correcto instanciar el objeto Entidades como lo estoy haciendo? ¿Debería ocuparse de sus conexiones abriendo y cerrando para cada consulta?
¿O debería eliminarlo explícitamente con una cláusula using()?
Gracias!
Ok, eso tiene sentido. Ahora, la pregunta es ... ¿Estoy haciendo las cosas incorrectamente? ¿Realmente necesito deshacerme del objeto Entidades? ¿Qué sucede si no? ¿Estaré "filtrando" conexiones al Servidor SQL? –
ObjectContext.Dispose no hace mucho (ver Reflector). Pero es razonable suponer que podría cambiar y usted * debería * eliminarlo. –