2010-03-26 4 views
0

Assez simple problème qui est résolu en PHP en utilisant une variable statique..NET MVC - Stockage du résultat de la base de données lors d'un résultat de page unique?

private static $pages; 
public function Pages() { 
    if($pages == null) { 
     $pages = new PageCollection(); 
     $pages->findAll(); 
    } 
} 

Partout dans mon code, j'utiliser des pages() :: someFindFunction() pour vous assurer que les résultats sont récupérés qu'une seule fois, et j'utiliser cette même collection.

Je veux la même chose dans mon application .NET MVC: utiliser quelque chose comme:

<%=MySite.Pages.findById(1).Title%> 

Dans le code ci-dessous, si j'utilise une variable privée, ou si j'utilise une classe publique avec des variables partagées (doesn peu importe) ils sont tous les deux persistés pendant toute l'application.

Je veux qu'ils se chargent de la même manière que PHP, une fois par demande. Maintenant, où puis-je stocker l'équivalent .NET de privé statique$pages, de sorte que le code ci-dessous fonctionne?

  //what to do with $pages?? 

Public Module MySite 
    Public Function Pages() As PageCollection 
     If $pages Is Nothing Then 
      $pages.loadAll() 
     End If 
     Return $pages 
    End Function 
End Module 
+0

Pour confirmer, les valeurs que vous souhaitez mettre en cache sont-elles spécifiques à l'utilisateur ou globales? –

+0

Spécifique à l'utilisateur, une seule demande – Ropstah

Répondre

1

1er, êtes-vous sûr que vous voulez un module? Normalement, vous utiliseriez une classe.

Public Class MySiteController 
    Private _pages as PageCollection 
    ReadOnly Property Pages As PageCollection 
     Get 
      If _pages Is Nothing Then 
      _pages = New PageCollection 
      _pages.FindAll 
      End If 
      Return _pages 
     End Get 
    End Function 

    ... other code here... 

    '' use it as: Pages.FindById(1) 
End Class 
+0

Bien, mais où vit la classe? Il doit être instancié n'est-ce pas? – Ropstah

+0

Ah, je vois. Si vous faites MVC, la classe peut être votre contrôleur. – Cheeso

+0

Mais que se passe-t-il si vous commencez à mélanger les requêtes du contrôleur? – Ropstah

Questions connexes