Bonjour,
Je souhaite changer la méthode d’accès a notre bdd Postgres, en mettant en place une couche d'accès aux donnée fonctionnant avec la fabrique de classe proposée par Npgsql.
J'ai modifier le machine.config afin d'y ajouter le nouveau provider.
J'ai ensuite créer une classe abstraite
Puis j'ai réaliser une classe d'implémentation avec les méthodes d’accès et de manipulation des données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public abstract class DbSource : IDisposable { protected DbConnection Connection; protected DbProviderFactory Factory; public DbSource() { String ConnectionString = ConfigurationManager.AppSettings["UseConnectionString"]; Factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[ConnectionString].ProviderName); Connection = Factory.CreateConnection(); Connection.ConnectionString = ConfigurationManager.ConnectionStrings[ConnectionString].ConnectionString; Connection.Open(); } public void Dispose() { Connection.Close(); Connection.Dispose(); } }
Lors des tests de charge une exception est levée: Exception non gérée*: System.Exception: Timeout while getting a connection from pool. Comme si il n'y avait plus suffisamment de connexion disponible dans le pool (Min=10, Max=50). Ce qui me fait penser que le destructeur de la classe de base n'est pas appelé. Dois-je mettre le code suivant dans toute mes classe d'implémentation, ou y a t'il quelques chose d'autre a faire ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class DDefault : DbSource { public DDefault(): base() { } ... Méthode d'accès }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public new void Dispose() { base.Dispose(); }
Merci
Partager