今週から VS 2005 による C# でのプログラムの勉強を開始した。＜やっとか！<br />
<br />
仕事で C# か Java を使うことになっているため、とりあえず Java はちょっと遠慮させていただきたいので、C# を始めている。(仕事での担当者の意向にもよる。その上司は Java 派の様なのだが...)<br />
<br />
これまでにも、VS2002?3? を購入したり、先日の MSC2005 で本を買ったりしてはいたのだが、やはり気持ちがのらない。でも今回は仕事なのでがんばるつもりで...<br />
<br />
で、本格的な開発に入る前の調査として C# ＆ .Net Framework 2.0 での開発に問題がないのか？と言うところが年内の仕事になっている。<br />
調査内容をブレイクダウンしてみると...<br />
<ol><li>Database が Postgres V8.1 に決定したので、それに接続が可能か？(できればネイティブで)</li>
<li>O/R マッピングが使用したいとの要望から、Nhibernate が VS2005 で動作するか？</li></ol>
<br />
上記に沿って二日ほど調べたのだが、Postgres に付属している PostgresSQL 用の .Net Data Provider は .Net Framework 1.1 用しか提供されていないようだ。<br />
これでは最初の要件が達成できないので、Google で調べてみる。<br />
スポンサーに <a href="http://www.crlab.com/">CoreLab</a> へのリンクがあった。早速、ここの製品である <strong>PostgreSQLDirect .NET</strong>を 試してみる。(6フィールドまでに限定された試用版がある。)<br />
サンプルも付属していたので、それを元に試してみる。試してみると結構簡単につながった。つながったけど、<strong>日本語が文字化け</strong>している。たぶん Encoding の指定が正しくないと直感的に考え Encoding 指定を探すが見つからず、CoreLab のサイトのフォーラムから Unicode を使用したいと書いている投稿を見つけた。その投稿によると Unicode を使用する場合には Charset プロパティを使用するとのこと。このプロパティを <strong>"SJIS"</strong> に変更してみると問題は解決した。(ちなみに Postgre に付属の Npgsql を使用する場合には、接続文字列に Encoding=SJIS と指定するか、 接続後 SET CLIENT_ENCODING TO SJIS と SQL を発行するようです。ちなみに後者の方法は CoreLab のドライバでも有効でした。)<br />
<br />
NHibaernate の方もダウンロードしてきて試してみる。こっちは ＠IT や CodeZine に記事があったのでそれを読んだ。<br />
今回は特に CodeZine の「<a href="http://codezine.jp/a/article.aspx?aid=156NHibernate">を利用してSQLを書かずにデータベースにアクセスする方法</a>」を参考にさせていただいた。CodeZine では記事はふつうに非会員でも読めるが、サンプルは会員のみとなっているので、登録させていただいた。<br />
こちらも、このサンプルのおかげで NHibernate が VS2005 上で動作することは確認できた。<br />
しかし、必要な要件の (1)と(2)の組み合わせがうまくいかない。<br />
NHibernate の接続文字列の設定が Npgsql のものしか提供されていない。だめ元で Npgsql 用に改造してみるが、つながらない。とここで、Npgsql への参照設定が抜けていたことに気づき、これを加えてみるがやはりうまくいかない。<br />
CoreLab のフォーラムで投稿を検索してみる。他のドライバへの投稿を含め 3 投稿発見できたが、接続文字列の例はなく暗礁に乗り上げた格好だ。<br />
この開発の着手が来年3月以降に予定しているので、それまでに Npgsql が .Net Framework 2.0 に対応してくれることを期待しつつ他を探している。