by WebSurfer
5. October 2022 16:14
PostgreSQL の既存のデータベースから Visual Studio 2022 のデータソース構成ウィザードを利用して型付 DataSet / DataTable + TableAdapter を作ることができます。それを使って、DB のレコードの一覧表示・編集ができる Windows Forms + DataGridView アプリを容易に作成できます。

SQL Server の場合は当たり前の話なので何をいまさらと言われるかもしれませんが、先日初めて PostgreSQL をインストールしたので試してみた次第です。
(ASP.NET MVC5 アプリで Entity Framework 6 を使って PostgreSQL の既存の DB の CRUD を行う場合については、先の記事「PostgreSQL で EF6 DB First」に書きましたので、興味があれば見てください)
この記事を書いた時の環境は以下の通りです。
-
PostgreSQL 14.4
-
Visual Studio Community 2022 17.3.5
-
Npgsql PostgreSQL Integration 4.1.12
-
Npgsql 6.0.7
-
.NET Framework 4.8
-
Windows フォームアプリケーション (.NET Framework)
Visual Studio で PostgreSQL に対してデータソース構成ウィザードが使えるようにするには Npgsql PostgreSQL Integration という拡張機能の追加が必要です。下の画像のバージョン 4.1.12 は Visual Studio 2022 用にリリースされたものだそうです。

拡張機能の追加後、Microsoft のドキュメント「新しいデータ ソースの追加」のようにデータソース構成ウィザードを起動すれば、「データ接続の選択」で PostgreSQL Database を選択できるようになります。

以下のように PostgreSQL への接続情報を設定して接続できれば、

そのあとは SQL Server とほぼ同様な手順で DataSet(xsd ファイル)を作成できます。

xsd ファイルが作成できると、デザイン画面でデータソースウィンドウに DataSet / DataTable が表示されるので (下の画像で MovieDataSet / Movie)、DataTable (Movie) の DataGridView を選択してから Form にドラッグ&ドロップします。

上の画像はドラッグ&ドロップして必要なコードがすべて生成された後、DataGridView.Dock プロパティを Fill に設定したものです。
次に NuGet から Npgsql をインストールします。

その後ソリューションをビルドして実行すればこの記事の一番上の画像のようなアプリが動きます。DataGridView を編集した結果も期待通り DB に反映されます。
ただ、微妙なところがあって、なぜか Npgsql のインストールのタイミングが問題で、自分の環境で試した時は以下の順番で行う必要がありましたので注意してください。
-
データソース構成ウィザードを起動し型付 DataSet / DataTable + TableAdapter を生成
-
「データソース」ウィンドウから作成した DataTable を Form にドラッグ&ドロップ
-
NuGet から Npgsql をインストール
-
ソリューションをビルド
想像ですが、データソース構成ウィザードが使う Npgsql と NuGet からインストールする Npgsql やその他の関係 dll とのバージョンの不整合が問題ではないかと思われます。