1. Make sure all attachements are delivered with your software build. Npgsql may come with some additional program librarys (especially security.mono.dll and npgsql.dll).
2. Implement the following procedures: ExecuteScalar() instead of retrieving a whole dataset for single value return querys.
3. Try to increase the connection pooling minimum value of the sql connection. You may override that setting in the connection string. See "user's manual" of npgsql for further information.
4. Npgsql seems not to be thread-safe. Adding "Thread.Sleep()" to procedures where exception are randomly thrown can decrease the number of errors resulting from asynchronous thread operations.