Je suis un débutant total chez Entity Framework et ASP.Net MVC, ayant appris la plupart du temps à partir de tutoriels, sans avoir une compréhension profonde de l'un ou l'autre. (J'ai de l'expérience sur .Net 2.0, ADO.Net et WebForms)Entity Framework - Comment utiliser mon objet "Entities"
Mon doute actuel provient de la façon dont j'instance mes objets Entités.
En fait, je le fais dans mes contrôleurs:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
Je fais comme ça parce que je qui me semblait assez autoritaire pour trouvé dans certains blog de MSDN que je suppose que c'était une bonne façon .
Cependant, je me sens pas très facile à ce sujet. Bien qu'il me sauve beaucoup de code, je suis habitué à faire:
using (NorthWindEntities db = new NorthWindEntities() {
}
Dans chaque méthode unique qui a besoin d'une connexion, et si cette méthode appelle d'autres qui aurai besoin, ça va passer db comme un paramètre pour eux. C'est ainsi que j'ai tout fait avec mes objets de connexion avant que Linq-to-SQL existe.
L'autre chose qui me rend mal à l'aise est que NorthWindEntities implémente IDisposable, ce qui par convention signifie que je devrais appeler sa méthode Dispose(), et je ne le suis pas.
Que pensez-vous de cela?
Est-il correct d'utiliser l'objet Entités comme je le fais? Devrait-il prendre soin de ses connexions en les ouvrant et les fermant pour chaque requête?
Ou devrais-je le mettre explicitement avec une clause using()?
Merci!
Ok, c'est logique. Maintenant, la question est ... Est-ce que je fais des choses incorrectement? Ai-je vraiment besoin de disposer de l'objet Entités? Que se passe-t-il si je ne le fais pas? Vais-je être "fuite" des connexions à SQL Server? –
ObjectContext.Dispose ne fait pas beaucoup (voir Réflecteur). Mais il est raisonnable de présumer que cela pourrait changer et que vous * devriez * l'éliminer. –