Il ne fait pas trop d'importance. J'ai demandé à Matt Warren de l'LINQ to SQL de l'équipe à propos de ça il y a longtemps, et voici la réponse:
Il ya quelques raisons nous avons mis en place
IDisposable:
Si la logique de l'application doit tenir
sur une entité au-delà de quand la
DataContext est prévu pour être utilisé ou
valide, vous pouvez faire valoir ce que de contrat par
l'appel de la Jeter. Différés chargeurs de
cette entité sera toujours référencement
le DataContext et essayez de l'utiliser
si aucun code tente de naviguer dans le
différés propriétés. Ces tentatives
va échouer. Disposer les forces de l'
DataContext de vider son cache de
matérialisé entités de sorte qu'un seul
entité du cache ne sera pas accidentellement
garder vivante de toutes les entités matérialisé
à travers cette DataContext, qui serait
autre cause de ce qui semble être un
fuite de mémoire.
La logique qui se ferme automatiquement
le DataContext de connexion peut être
trompé en laissant la connexion
ouvert. Le DataContext s'appuie sur l'
le code de l'application l'énumération de tous les
les résultats d'une requête depuis l'obtention de
la fin d'un resultset déclenche l'
connexion à fermer. Si l'
l'application utilise IEnumerable de l'
Méthode MoveNext au lieu d'un foreach
déclaration en C# ou en VB, vous pouvez quitter
l'énumération prématurément. Si votre
l'application rencontre des problèmes avec
les connexions ne ferme pas, et vous
suspect le comportement de fermeture automatique
ne fonctionne pas, vous pouvez utiliser le Jeter
modèle comme un travail autour de.
Mais, fondamentalement, vous n'avez pas vraiment besoin de les éliminer dans la plupart des cas - et c'est par la conception. Personnellement, je préfère le faire de toute façon, comme il est plus facile de suivre la règle de "disposer de tout ce qui implémente IDisposable" que de rappeler une charge d'exceptions - mais vous avez peu de chances de fuite d'une ressource si vous n' oubliez pas d'en disposer.