PostgreSQL + Npgsql + iBATIS.NETで二層コミット(分散トランザクション)
psqlodbcだと、不明なエラーが出るのでNpgsqlを使うことにした。
(普通は最初からこっち使うんだろうけど。。。)
Npgsql2.2をサイトからダウンロードする。
(Postgresのアプリケーションスタックビルダでダウンロードしても、アセンブリが見つからないから
サイトから直接ダウンロードしました。)
NpgsqlをBINフォルダに入れる。
iBATISのproviders.configで、Npgsqlの設定を以下のようにする。
sqlmap.configに以下の設定
Enlist=True;で、System.Transactionに対応するようになって
二層コミット(分散トランザクション)できるようになるっす。
properties.configに設定する値。
これでTransactionScopeで自動的に分散トランザクションに参加しますっす。
時間がたつとエラーはきます。。。
IBatisNet.DataMapper.Exceptions.DataMapperException: Unable to open connection to "PostgreSql, Npgsql provider V2.0.2.0". ---> System.Runtime.Remoting.RemotingException: オブジェクト '/6a15b01a_b95b_4c4b_8d64_8cc3d5bd67d9/qwg9otzzoa7hkooguxaairxh_10.rem' が切断されたか、サーバーに存在しません。
IISを再起動したら直るんだけど。。。