2009-10-29 3 views
0

J'ai implémenté un modèle de référentiel dans mon application et dans certains de mes contrôleurs, j'utilise différents référentiels. (Pas IoC mis en œuvre)Plusieurs DataContext/EntitiesObject

UsersRepository Users; 
OtherRepository Other; 
Other1Repository Other1; 

public HomeController() 
{ 
    this.Users = new UsersRepository(); 
    this.Other = new OtherRepository(); 
    this.Other1 = new Other1Repository(); 
} 

Pour éviter les problèmes futurs des constructeurs de contrôleur pléthorique, j'ai créé une classe wrapper qui contient tous les dépôts comme des objets de la classe et je demande une seule instance de cette classe dans mes constructeurs de contrôleur.

public class Repositories 
{ 
    UsersRepository Users; 
    OtherRepository Other; 
    Other1Repository Other1; 

    public Repositores() 
    { 
     this.Users = new UsersRepository(); 
     this.Other = new OtherRepository(); 
     this.Other1 = new Other1Repository(); 
    } 
} 

Contrôleur:

Repositories Reps; 

public HomeController() 
{ 
    this.Reps= new Repositories(); 
} 

cet impact aura-t-les performances de ma demande maintenant ou dans l'avenir, lorsque la demande devrait croître. Chaque référentiel crée son propre DataContext/Entities pour 10 dépôts, soit 10 DataContexts/Entities différents.

DataContext/Entitie est un objet coûteux à créer dans un si grand nombre?

Répondre

3

Il vaudrait peut-être mieux ne créer que les dépôts lorsque vous les utilisez, plutôt que dans le constructeur.

private UsersRepository _usersRepository; 
private UsersRepository UsersRepository 
{ 
    get 
    { 
     if(_usersRepository == null) 
     { 
      _usersRepository = new UsersRepository(); 
     } 
     return _usersRepository; 
    } 
} 

Ensuite, utilisez la propriété à la place du champ d'accès.

+0

La seconde "privée" devrait-elle être publique? – Omar

+1

Soit c'est bien. Dans votre exemple, vos champs étaient privés, donc j'ai rendu la propriété privée. Mais cela pourrait être rendu public si c'est ce dont vous avez besoin. – NotDan