jeudi 1 avril 2010

Asp.net 3.5 - Améliorer les performances de Linq en Asp.Net 3.5

En Asp.Net on dispose du contexte de la page (HttpContext), donc pourquoi ne pas l’utiliser pour améliorer les performances de linq ?
public static class DataAccessLayer
{
   // Cet objet est une clé pour le dictionnaire d’Item de l’HttpContext
  
private static object _eelsContextKey = new object();
   // Comme dans un pattern singleton classique, on récupérera ici toujours    // la même instance de notre objet pour un HttpContext donnée.
  
private static MyDataContext Context
   {
      
get        {
          
if (HttpContext.Current.Items.Contains(DataAccessLayer._eelsContextKey) == false)
           {
               MyDataContext context =
new MyDataContext("Connection String Here...");

               HttpContext.Current.Items.Add(DataAccessLayer._eelsContextKey, context);

              
return context;
           }
          
else            {
              
return (MyDataContext)HttpContext.Current.Items[DataAccessLayer._eelsContextKey];
           }
       }
   }

   // Avec ceci, on peut faire de très simple requêtes :

  
public static IEnumerable GetClients()
   {
      
return from myRow in DataAccessLayer.Context.Clients select myRow;
   }

  
public static IEnumerable GetProjects()
   {
      
return from myRow in DataAccessLayer.Context.Projects select myRow;
   }

  
public static IEnumerable GetThePoint()
   {
      
return from myRow in DataAccessLayer.Context.You_Get_The_Point select myRow;
   }
}
Source :

Aucun commentaire:

Enregistrer un commentaire