Mit etwas Hilfe fand ich die Lösung in der Npgsql-Dokumentation, hier .
Npgsql enthält standardmäßig einige Timeout-Parameter für Verbindungen und Befehle. Nach einem Windows-Neustart war der erste Zugriff auf die Tabelle sehr langsam, was das Befehls-Timeout auslöste.
Mit zusätzlichen Parametern in der Verbindungszeichenfolge konnte ich diese Einstellungen höher ändern und mein Problem lösen:
connectionString += ";Timeout=180;Command Timeout=180";
Bonus-Tipp :eine Postgresql-Funktion pg_sleep(seconds)
hat mir geholfen, das Problem ohne tatsächliche Neustarts zu reproduzieren. Sehr hilfreich:
SELECT pg_sleep(60);