I’ve a C# client application that need to checks a table on a Postgres db every 15 minutes. The problem is that I need to install this client into more or less 200 client so, for that I need to close the DB connection after the query.
I use .Close() method but, if I check on pg_stat_activity table on Postgres DB, I can see the connection still open in IDLE status. How can I fix that issue? Is it possible to close definitely the connection?
thanks,
Andrea
Like most ADO.NET providers, Npgsql uses connection pooling by default. When you
Close()theNpgsqlConnectionobject, an internal object representing the actual underlying connection that Npgsql uses goes into a pool to be re-used, saving the overhead of creating another unnecessarily. (See What does "opening a connection" actually mean? for more).This suits most applications well, as it’s common to want to use a connection several times in the space of a second.
It doesn’t suit you at all, but if you include the option
Pooling=falsein your connection string, it will override this default, andClose()will indeed close the actual connection.