Npgsql 2.2.0がリリースされ、新しい機能が追加された。VS Data Designerをサポートし、Entity Framework関連の改善、Postgres 9.4をサポートしている。
2.2.0より以前は、Visual Studio内で(例えばマシンコンフィグファイルを経由して)Npgsqlプロバイダをアクセス可能にできなかった。というのは、DDEXをサポートしていなかったからだ。今回のリリースで、新しい拡張によって、これが可能になった。この機能を実現するためには、500ファイル以上が変更され、48コミットを必要とした。Npgsqlの開発者であるFrancisco Jr氏は、これは特に要望のあった機能だったと説明した。
この統合を実現するための手順についてはここで説明されている。Npgsqlコミュニティは現在、Npgsqlのexeインストーラを開発している。インストーラが完成すれば、統合の手順はよりシンプルになるはずだ。
また、今回のリリースでは、JSONがサポートされる。JSONB型、JSON型、HStore型がサポートされるのだ。既報の通り、JSONBは新しいデータ型であり、Postgresql 9.4で導入された。この型は、JSONとHStoreの特徴を組み合わせ、PostgresにNoSQLの機能を付け加える。.NETの開発者はNpgsqlを使ってこの機能を利用できる。JSONとHStoreのユーザは最終的にはJSONBへ移行すると思われる。
また、NpgsqlはWindowsでGSSAPIをサポートする。ユーザが認証するときに、Active Directoryを簡単に利用できるようになる。
また、EF6に関する便利な機能や修正が行われている。
- EFマイグレーションとコードファーストを使う場合に、自動データベース作成をサポートする。この機能は、EF 6で初めて導入された。
- 関係式、列の表現、列名のエイリアス関連が改善された。この改善前は、skipやtakeを含むクエリがエラーになる場合があった。また、ジョインでの名前の衝突は自動的にエイリアスが使われるようになった。
- オペレータのハンドリングや日付関数関連が修正された。DateDiff関数が動作するようになった。また、オペレータは扱いやすくなった。オペレータの前に何があるか、連想性、ポストフィックス、プレフィックス、バイナリかを考慮するようになった。
- 列を定義しない"Insert into"がデフォルトの値を使うようになった。
昨年、NpgsqlにSSLStreamのサポートが追加された。これは、Mono.Securityには依存していない。新しいバージョンは、デフォルトでSSLStreamが有効になっている。これは、将来のリリースで、Mono.Securityの依存を除去するための準備だ。
また、Npgsql 2.2.0は、Postgresバージョン8.4のサポートを除外した。古いバージョンのPostgresを使いたい場合は、古いバージョンのNpgsqlを使う必要がある。Franciscoの説明では、
サポートしないバージョンについて、開発をやめるというわけではありません。サポートしていない機能を使わなければ問題はおきません。たとえば、Npgsql 2.2は現時点では、Postgresql 8.2以上でしか使えませんが、それば、コマンドのタイムアウトの扱いに関するサーバサイドのサポートや、以前のバージョンではサポートしていなかった問い合わせをサポートしたからです。
このリリースでは、プロトコル2(Postgres 7.4以前で使われていた)のサポートを廃止した。(Postgresのプロトコルについてはこちらを参照されたい)。
次は?
現在、興味深い改善が行われているが、今回のリリースには含まれていない。
- 非同期のサポート
- postgisデータ型のサポート - Postgresの空間拡張の機能を使うためのデータ型
- EDMType生成の機能改善
Npgsqlバイナリの最新はnuget経由でダウンロードできる。