J'utilise actuellement un DbContext
similaire à celui-ci :
namespace Models
{
public class ContextDB: DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserRole> UserRoles { get; set; }
public ContextDB()
{
}
}
}
J'utilise ensuite la ligne suivante en haut de l'écran de l'application TOUTES mes contrôleurs qui ont besoin d'accéder à la base de données. Je l'utilise également dans ma classe UserRepository qui contient toutes les méthodes relatives à l'utilisateur (comme obtenir l'utilisateur actif, vérifier quels rôles il a, etc ) :
ContextDB _db = new ContextDB();
En y réfléchissant, il y a des occasions où un visiteur peut avoir plusieurs DbContexts actifs, par exemple s'il visite un contrôleur qui utilise le UserRepository, ce qui n'est peut-être pas la meilleure des idées.
Quand dois-je créer un nouveau DbContext ? Ou bien, devrais-je avoir un contexte global qui est transmis et réutilisé à tous les endroits ? Cela n'entraînerait-il pas une baisse des performances ? Les suggestions d'autres façons de procéder sont également les bienvenues.