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;
}
}
{ // 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