【C#】PostgreSQLでEntityFrameworkの使用方法#2

PostgreSQL

前回はGUIのエディタを使った方法を書きましたが今回はcsファイルを作成して直接接続する方法を上げたいと思います。GUIを使用した場合のデメリットであるインストールしたversionとの互換が無いとダメという問題がありません。つまりNpgsqlのバージョンアップに対応し易いということですね。

参照追加(Nuget)

Nuget実行方法はこちらの記事を参考下さい。

【VisualStudio】NuGetの使い方

検索ウィンドウに「npgsql」と入力して表示される「Npgsql for Entity Framework 6」をインストールします。

npgsql

これをインストールすると「Npgsql」「EntityFramework」が自動で追加されます。インストール済みを見るとこういう形になっているかと思います。

npgsql2

App.configの変更

DbProviderFactoriesに関する情報を追記する必要があります。「system.data」「DbProviderFactories」を「configuration」の前に追加して下さい。

※3月4日追記

Npgsqlが既に端末に登録されている場合にはDbProviderFactoriesに<remove invariant=”Npgsql” />を追加しないとエラーとなりますので追加しました。

データベースクラスの作成

hogeと言うテーブルにidとnameがあった場合に作成するクラスは以下のようになります。EntityFrameworkはKeyを設定してやらないと動かないので注意が必要です。

DbContextの作成

DbContextを継承してクラスを作ります。今回はFugaDbContextと言う名前で作成してみています。コンストラクタでNpgsqlConnectionを渡しているのとスキーマ(Shema)を変更する方法を書いています

使い方

DbContextは作成されているのでLinqなどを使用して取り出しましょう。

GUIを使用してのクラス作成が出来るようになったので簡単になったのはいいんですがNpgsqlのバージョンアップ時にどうしたものか悩ましい問題だったのが今回の直接作成で解決しますね。

それでもあまりに大きいデータベースの場合にはテーブルクラスの作成だけでもかなりの重労働?なのでそこはジェネレータで作成した方が刺し身たんぽぽから逃げれて嬉しいですね。そのうちジェネレータの使用方法を取り上げたいとは思います。

1 個のコメント