2009-05-07 9 views
-3

Comment puis-je utiliser l'interface IDisposable avec asp.net mvc.ASP.NET MVC et Idisposable

+0

Que voulez-vous vraiment faire? Quelle est la différence entre ASP.NET MVC et d'autres zones de ce problème? –

Répondre

0

Ce n'est pas une si mauvaise question que certains pourraient le penser. C'est juste demandé d'une mauvaise façon. Considérez le code suivant:

ActionResult UserList() 
{ 
using (var ctx = new DbCtx()) 
{ 
    return View(ctx.Users) 
} 
} 

ne fonctionnera pas car CTX est disposé bien avant réellement voir itère sur les données obtenues en objet disposé exception.

Solution serait de disposer de ctx dans Controller.Dispose. Ce qui n'est pas évident, c'est que la plupart des dépendances injectées dans nos contrôleurs devront implémenter IDisposable tôt ou tard.

Ceci n'est pas un problème spécifique à mvc.

+0

C'est pourquoi j'aime utiliser Autofac comme usine de contrôleur. Les dépendances injectées ont automatiquement leur méthode Dispose appelée, s'il y en a une, à la fin de la requête. –

1

IDisposable dans asp.net mvc est le même que IDisposable dans d'autres endroits du framework .Net.