Question

Quel est le meilleur modèle à vie pour un DataContext?Dois-je simplement en créer une nouvelle chaque fois que j'en ai besoin (c'est-à-dire au niveau de la fonction), dois-je en garder une disponible dans chaque classe qui l'utiliserait (niveau de la classe) ou dois-je créer une classe statique avec un DataContext statique (domaine d'application niveau)?Existe-t-il des bonnes pratiques considérées à ce sujet ?

Était-ce utile?

La solution

Vous devez pratiquement conserver le même contexte de données disponible tout au long de la durée de vie des opérations que vous souhaitez effectuer si vous souhaitez un jour stocker des modifications qui doivent être .SubmitChanges()'d plus tard, sinon vous perdrez ces modifications.

Si vous interrogez simplement des éléments, vous pouvez les créer selon vos besoins, mais si vous souhaitez plus tard .SubmitChanges() vous devrez beaucoup refactoriser votre code, vous pouvez donc aussi bien adopter le modèle consistant à conserver efficacement le datacontext global dans toute votre application depuis le début.

Notez que le contexte des données est débranché.La connexion n'est établie que lorsque les données de la requête sont dénombré (pas lorsque vous exécutez la requête pour la première fois, il s'agit d'un type de données « paresseux », il ne fournit donc des données que lorsque cela est nécessaire), puis fermé immédiatement après.Sur .SubmitChanges() la connexion est ouverte pour soumettre les modifications puis fermée immédiatement après.Alors ne pensez pas à garder le datacontext autour maintient une connexion ouverte, ce n'est pas le cas (vous pouvez connecter le StateChange en cas de connexion pour le confirmer par vous-même, c'est comme ça j'en suis sûr).

Il y a un excellent article sur Le blog de Rick Strahl qui couvre ce sujet en profondeur, bien plus que ce que ma réponse ici propose !!

Autres conseils

Je pense que Jeff Atwood en a parlé dans le Podcast Code d’élevage, alors qu'il a été interrogé sur exactement la même chose.Écoutez-le au cours des 15 à 20 dernières minutes environ.

Je pense que dans SO, le contexte de données est créé dans la classe Controller.Je ne suis pas sûr de beaucoup de détails ici.Mais c'est à ça que ça ressemblait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top