c#, entity framework: utilisation correcte de la classe DBContext à l'intérieur de votre référentiel de la classe

J'ai utilisé pour mettre en œuvre mes classes de dépôt comme vous pouvez le voir ci-dessous

public Class MyRepository
{
      private MyDbContext _context; 

      public MyRepository(MyDbContext context)
      {
          _context = context;
      }

      public Entity GetEntity(Guid id)
      {
          return _context.Entities.Find(id);
      }
}

Cependant j'ai lu récemment cet article qui dit que c'est une mauvaise pratique d'avoir des données de contexte comme un membre privé dans votre référentiel: http://devproconnections.com/development/solving-net-scalability-problem

Maintenant, théoriquement, l'article est en droit: depuis DbContext implémente IDisposable de la correcte mise en œuvre devrait être le suivant.

public Class MyRepository
{
      public Entity  GetEntity(Guid id)
      {
          using (MyDbContext context = new MyDBContext())
          {
              return context.Entities.Find(id);
          }
      }
}

Toutefois, selon cet autre article de l'élimination DbContext serait pas indispensable: http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html

Lequel des deux articles est à droite? Je suis assez confus.
Ayant DbContext en tant que membre privé dans le référentiel de la classe peut vraiment causer des "problèmes d'évolutivité" le premier article le suggère?

  • J'ai toujours compris DBContext ne doit être ouvert pour une unité de travail
  • Alors, préférez-vous le deuxième code?
  • C'est mieux pour moi oui
  • Dix réponses. "Première approche", "deuxième approche", "une autre approche". C'est un exemple de manuel de principalement une opinion basée sur la question. Je vote pour la fermer si il n'y avait pas la bounty.
  • Arnold comment est-ce qu'un avis basé sur la question? Se demander quelle est la façon correcte d'utiliser une langue ou d'un cadre n'est pas une opinion.