2010-11-07 3 views
0

J'ai ma base de données, qui ont mon ADO.NET Entity Data Model qui ont mon Repository dans un projet de bibliothèque applicationPrésentation des objets du référentiel, tout commence une nouvelle connexion à la base de données?

puis, sur le site Web pour chaque contrôleur Je commence par

MyRepository db = new MyRepository(); 

J'attends que ce site sera accessible par jour et 50,000 je me demandais ... ne la partie new MyRepository() démarrer une nouvelle connexion au Base de données?

Est-ce sécuritaire?

public class MyController : Controller 
{ 
    public MyRepository db { get; set; } 

    protected override void Initialize(RequestContext requestContext) 
    { 
     if (db == null) { db = new MyRepository(); } 

     base.Initialize(requestContext); 
    } 
    ... 

Comment puis-je apprendre un peu plus sur comment les crochets modèle Entité vers le haut dans la base de données éviter multiples « mauvaises » choses à se produire?

J'ai plusieurs objets que je aime à mettre en cache, car ils sont assez complexes et ne changent jamais (à moins que quelqu'un sur la zone ADMIN modifie), quelles sont mes meilleures options?

Merci.

Répondre

1

ADO.NET utilise un connection pool qui évite de créer des connexions à la base de données à chaque fois. Un pool de connexions est créé par domaine d'application et par chaîne de connexion et les connexions de ce pool sont réutilisées. Ainsi, lorsque vous instanciez votre référentiel, aucune connexion n'est créée avec la base de données. Pour mettre en cache des objets, vous pouvez jeter un oeil à la standard techniques.

En ce qui concerne votre exemple si MyRepository est jetable, il est recommandé d'appeler la méthode Dispose, ce qui pourrait être fait avec la méthode Dispose du contrôleur.

+0

Dois-je hériter de l'interface IDisposable sur MyRepository ou simplement l'utiliser comme un objet normal (public class MyRepository {} ')? – balexandre

Questions connexes