技術日記
技術調査記録Edit

dblinq2007 - LINQ provider for Oracle, PostgreSQL, MySQL, Ingres, SQLite, Firebird and ... SQL Server (C# 3.0) - Google Project Hosting

Entity Frameworkを使わないとなると、LINQ to SQLが次の候補になるのかな。Visual Studioから新規データクラスの追加でLINQ to SQLクラスは一応選択できるけれども、サポートされていないProviderってことで、結局標準状態ではまともにMySQLは扱えない模様。

しょうがないんでググってみたら、上記のDBLinqというものが見つかった。様々なRDB用のLINQプロバイダークラスを開発しているオープンソースプロジェクトらしい。ただ更新履歴を見ると2010年4月くらいまででほぼ開発は止まっているみたいだけど。

使い方としては、コマンドラインツールDbMetal.exeにオプションとしてDB接続方法を指定して実行すると、そのDB接続用のLINQ向け.dbmlファイルを生成してくれるんで、それをプロジェクトに追加して使用する。

ただし、標準で生成される.dbmlファイルはそのままじゃ使えない。まあ大して大きな問題ではなく、使用するProviderクラス名を手動で直したり、GetTableの戻り値のクラス名をDbLinqのものに変更したりといった程度なんだけど、LINQで使いやすいようにDB定義をいろいろ修正してから生成し直すたびに、同じことを手動でやらなきゃいけない。あとこういう状況のまま放置されているってことは、実際に使われている事例があんまりなさそうだよね、と思うとモチベーションがだだ下がる。

ちょっとこれじゃーなーと思って、今度はプリミティブにMySql.Data.MySqlClient.MySqlConnectionから地道にSQL文を書いてDB処理を書く方法も試してみたりもしたけれど、これはやっぱり今更やりたくないな。System.Data.DataSetExtensionsとか使ってDataSetをEnumerableにしてみたりもしたけど、そこまでやるんだったら素直にADO.NET Entity Frameworkの範囲内で試行錯誤した方がましな気がしてきた。

というわけで、一周回ってもう一度振り出しに戻ってみることにする。

Published At2011-11-02 16:12Updated At2011-11-02 16:12