H2SharpはDbProviderFactoryに対応していない
前回書いたH2Sharpについて、実際に使ってみて残念な点があったので挙げておく。
残念な点「DbProviderFactoryに対応していない」
残念な点。それは「DbProviderFactoryに対応していない」点。
System.Data.Common.DbProviderFactoryクラスを継承したクラスがないことから、明らかに対応していない。
私にとって、これは致命的である。私はDbProviderFactoryを使ったライブラリを使っているので、対応していないとなると、そのライブラリは使えない。H2Sharpに依存したコードを書かなくてはいけない。
H2Factoryクラスくらいなら、すぐ書ける。newしてインスタンスを返すメソッドを書いてやるだけで済む。根本的な問題は他の場所にある。
根本的な問題点
根本的な問題になるのはH2Connectionのコンストラクタである。
H2ConnectionはConnectionStringの他にUserNameやPasswordを必要とする。他にもコネクションプールを使おうとするとH2ConnectionPoolのインスタンスをH2Connectionのコンストラクタに渡さないといけない。
ADO.NETのConnectionString
ADO.NETのConnectionStringは、通常*1ユーザ名・パスワード・コネクションプーリングの有効無効・最大接続数などすべての接続情報を含む。ConnectionStringとユーザ名とパスワードとコネクションプーリングの設定とが別々にしかできないのであれば、それはADO.NETのConnectionStringとは違う。
もしも、型安全性に配慮したいなら、ConnectionStringBuilderクラスを使えばいい。しかし、そちらはオプションであり、優先されるのはConnectionStringのみで指定できることだ。
これからの予定
批判ばかりしても仕方がないので、H2Sharpを修正してみる予定。それについては、また後日。
*1:SQL Server, Oracle, ODBC, OLE DBくらいしか確認していないが、十分だろう。