【C#】PostgreSQLでEntityFrameworkの使用方法
C#でPostgreSQLデータベースに接続をする場合、PostgreSQL ODBC driverを使用する方もいるかと思いますがNpgsqlを使用して接続するのが一般的だと思います
接続はNpgsqlでクラスへの変換はDapperなどのORMを使用したりDataSetを使用したりする事もあるかと思います。
ただC#を使用しているならEntityFramewrokを使用してデータベースとの連携をより簡単に行いたいですよね
Npgsqlはversion2.2.0から「Visual Studio Data Designer」をサポートするようになりました。このアップデートによりVisualStudio単体でEDMの作成が可能となっています。
それじゃあ今まではPostgreSQLではEntityFrameworkを使用できなかったかと言うとそうでもありません、コマンドプロンプトからexeを実行する作業を行いEDMを作成することも可能でした。今回の変更から自動で作成することが可能となったのです。
手動でEDMジェネレータを使用したEDM作成
過去のバージョンでEDMを使用したEntityFramworkを使用する場合にはEDM ジェネレーター (EdmGen.exe) ツールをコマンドプロンプトから実行する事で可能でしたがVisualStudioから実行が可能となっています。
EDMジェネレータでNpgsqlを使用するにはDLLの登録が必要です。コマンドプロンプトからインストールも出来ますがインストーラを使用しても可能です。インストーラは上記NpgsqlダウンロードサイトのSetup_Npgsql*となっているファイルを実行すれば可能です。
Npgsqlはこちらからダウンロードして下さい。
# gacutil -i Npgsql.dll # gacutil -i Mono.Security.dll
Visual Studio Data Designerを使用した自動EDM作成
こちらはインストーラからのインストールが必須です。Npgsqlはこちらからダウンロードして下さい。
インストールが完了したらVisualStudioを起動してプロジェクトを作成するもしくは作成中のプロジェクトを開いて下さい。追加を選択するとEntityFrameworkで選択する項目にNpgsqlが追加されていると思います。
残りはSQLServerと作業が同じですので改めて説明は必要ないかと思います。
DLLのバージョンに関する注意点
インストーラを使用して設定されたNpgsqlのバージョンに対してプロジェクトに追加したNpgsqlのバージョンが違っていたりするとEDM作成時にエラーが出たりします。プロジェクト追加したDLLのバージョンの方が新しい場合には問題がなさそうに思えますが実はその場合でもダメです。
ここらへんの問題はバージョンが上がって行くことで互換を持たせたりするのかもしれませんが現在は残念ながら必ず一致させる必要があるようです。
ここ最近はMySQLが色々あったので無料で使用できるRDBMSと言えばPostgreSQLという方が増えているかと思います、人気は確実なんですがあまり「EntityFramework &?PostreSQL」の情報が無かったので今回の記事を参考に簡単にツールの作成などが出来るようになればと思います。
[amazonjs asin=”4774138622″ locale=”JP” title=”完全版 究極のC#プログラミング ~新スタイルによる実践的コーディング”]