Mono 上の MySql データベースで Linq を使用するにはどうすればよいですか?
質問
MySql データベースと対話する C# コードに Linq 機能を提供するライブラリが多数あります。Mono で最も安定して使用できるのはどれですか?
背景 (ほとんど無関係):MySql データベースの値を更新する単純な C# (.Net 2.0) プログラムがあります。これは cron ジョブ経由で毎晩実行され、Pentium 3 450Mhz、Linux + Mono で実行されます。主に演習として Linq (.Net 3.5) を使用して書き直したいと思います (Linq はまだ使用したことがありません)。
解決
MySql 用の唯一の (無料) linq プロバイダーは次のとおりです。 DbLinq, 、本番環境への対応には程遠いと思います。
もあります MyDirect.Net これは商用ですが、その機能についてはさまざまなレビューを聞いています。
MySql が .net コネクタの 5.3 バージョンに Linq to Entities API を実装する予定であることを読みましたが、その予定があるかどうかはわかりません。実際、MySql はここ数か月間、Entity Framework のサポートについてまったく沈黙してきました。
補遺:リリース ノートによると、MySql Connector/Net 6.0 の最新リリースでは EF がサポートされています。これがどれだけ安定しているか、どれだけ役立つかはわかりません。試したことがある人からの意見をぜひ聞きたいです。
他のヒント
による モノラルロードマップ Linq がモノラルで利用できるかどうかわかりません。
Linq の少なくとも一部は最新リリースで利用できる可能性がありますが、Linq to DB は Mono 2.4 (2009 年 2 月) にリストされています。
Monoについてはよくわかりませんが、使い始めたばかりです ライトスピード そしてそれはLINQ-to-MySQLをサポートします。
現時点では、linq to SQL を使用することはできません。サードパーティの linq mysql プロバイダーまたは linq to entities を検討することをお勧めします。linq to sql は SQL サーバー データベースに対してのみ機能します。
LINQ to SQL は、式の力を利用してコード内でクエリを簡単に構築できるようにする単純な ORM レイヤーです。
ツールのアドホック クエリを呼び出すだけの場合、LINQ を使用する必要はほとんどありません。コードに抽象化の層が追加されるだけです。
でチュートリアルを試してみました http://www.primaryobjects.com/CMS/Article100.aspx. 。これは、dblinq/dbmetal を使用して、各テーブルのデータ コンテキスト クラスとクラスを生成します。
コードは、最初の試行で未処理の例外 (MySql.Data.Types.MySqlConversionException:) が発生して失敗しました。MySQL の日付/時刻値を System.DateTime に変換できません)。グーグルが明らかにしたことは、「ゼロdateTime = true;」を追加することで、これを簡単に解決する必要があることを明らかにしました。接続文字列に。残念なことに、これでは私の問題は解決されませんでした。MySQL .Net コネクタが原因であると考え、MySQL コネクタを使用して linq2sql 中間層なしで dblinq によって生成された SQL を実行しました。今回は例外は発生しませんでした。日付列のないテーブルは DbLinq で機能しました。したがって、私の実験によると、DbLinq は運用準備には程遠い、という Adam の意見に同意します。