Maison >développement back-end >C++ >Dois-je supprimer les contextes de données dans LINQ to SQL ?

Dois-je supprimer les contextes de données dans LINQ to SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-05 16:12:48376parcourir

Should I Dispose of Data Contexts in LINQ to SQL?

Quand supprimer un contexte de données

Dans les couches d'accès aux données qui utilisent des classes LINQ, il est courant de rencontrer le dilemme de savoir quand supprimer contextes de données. Considérez l'extrait de code suivant qui simplifie le modèle :

private DataContext myDb;
public static MyClass GetMyClassById(int id)
{
    DataContext db = new DataContext();
    MyClass result = (from item in db.MyClasss where item.id == id select item).Single();
    result.myDb = db;
    return result;
}

public void Save()
{
    myDb.SubmitChanges();
}

Les nouveaux contextes de données doivent-ils être instanciés à chaque fois ?

En règle générale, vous n'avez pas besoin de vous débarrasser de contextes de données explicitement. Comme l'explique Matt Warren de l'équipe LINQ to SQL :

  • Application des contrats d'utilisation : Dispose peut être utilisé pour empêcher les chargeurs différés de référencer des objets DataContext non valides lorsque les entités sont conservées au-delà de leur destination. utilisation.
  • Gestion de la mise en cache : Dispose force DataContext à supprimer son cache d'entités matérialisées, empêchant les fuites de mémoire.
  • Encouragement à la fermeture de connexion : DataContext ferme automatiquement les connexions lorsque les résultats de la requête sont énumérés. Dispose peut être utilisé comme solution de contournement en cas d'échec de la fermeture automatique.

Bonnes pratiques

Bien que ce ne soit pas strictement nécessaire, il est recommandé de supprimer les contextes de données pour simplifier la mémoire. gestion. En adhérant à la règle de disposer de tous les objets IDisposable, vous réduisez le risque de fuites potentielles de ressources.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn