2011-08-05 1 views
1

データベースに対して実行するSQL文を生成するために、Enity FrameworkとLINQの統合方法が不思議です。カスタムオブジェクトのLINQ to SQL/Entityのような動作を実装する

私は自分のカスタムコレクションオブジェクトを持っているとしましょう。 SQLステートメントを生成するために、そのオブジェクトをLINQとどのように統合しますか?

+1

これはかなり広い質問です。あなたはもっと具体的になりますか? –

+0

@ジャスティン、答えは潜在的に非常に深い主題です。私はインターフェイスの実装についてはあまり知らないので、具体的な質問は本当にありません。私は多かれ少なかれ、あなたがそのような仕事から始まるところを探しています。 – Kratz

答えて

3

は、その後、あなたがどうなるのかにある:それは、XMLへのLINQのためのエンティティへのLINQ、LINQ to SQLは、など 参照してください正しいですかコレクションクラスにIQueryableインターフェイスを実装させてください。このインターフェイスの一部として、Linq式が実行されると、.NETフレームワークはLinq式ツリーをIQueryableのカスタム実装に渡します。コードはこの式ツリーを解析し、必要に応じてSQLを生成したり、必要なアクションを実行したりして結果を返します。

編集:追加リンク

+1

良い答え、+1、しかしあなたはそれ以上の読みにいくつかのリンクを与えることによってそれを改善することができます。個人的には、Jon Skeetの本を使い、コードに実装したい場合はIQueryableの実装についてさらに詳しく読むことをお勧めします。 –

+0

@Dmitry - 要求通りにリンクが追加されました。楽しい! – CodingWithSpike

2

Linqを使用してそれらを照会するには、カスタムクラスに対して特定のインターフェイス(たとえばIQueryable)を実装する必要があります。また、あなたのクラスを構成するコレクションがある場合、この地形で得られるように列挙子を公開することができます(IEnumerableの実装)。 を参照してください: How to implement IQueryable

あなたは非常に専門的な「LINQの」機能が必要な場合は、T-SQLにLINQの式を変換するためにLINQ to SQLの中で使用されているもののよう、そして、LINQのが標準のようなものです:のDiferentセット技術はLinqを異なる方法で実装していますが、特定のガイドラインがあります。あなたはSQL文を作成した独自のコレクションを作りたい場合

Walkthrough: Creating an IQueryable LINQ Provider

+0

Linqのサポートを受けるために、「あなたが何を意味するのか正確にはわかりません。私はちょうど人々が間違った印象を受けないようにしたいと思っています。LINQはLanguage Integrated Queryの略で、既存のオブジェクトを装飾する必要なしにすぐにオブジェクト上で動作します。 –

+0

@Quintin - 私は、IEnumerable やIQueryable などのインターフェイスを実装して、ほとんどのLINQ拡張メソッドにアクセスする必要があるということを指摘していると思います。特定のクラスの単一のインスタンスに必ずしも適用されるわけではありません。しかし、これはLINQという巨大な画像のほんの一部です。問題は非常に広いです。 –

+0

@Quintin、Justin、あなたはどちらも正しい。私は私の答えを編集しました。ありがとうございます – SalvadorGomez

1

同様の要件とそこに誰を助けるためには、私がどのようにチュートリアルのシリーズを書きました単純なLINQプロバイダを作成し、式ツリーを解析し、それらを所望の出力に変換する(例えば、 g。 SQL)を実行し、コンパイルします。そのようなプロバイダーをプロダクションシステム用に開発したことで、私は最終的にその経験が他の人を助けるかもしれないと思っていました。私は非常に、特にそれが不足している被験者に、彼らの知識を共有する他の人から、過去に恩恵を受けてきたので、うまくいけば、これはまた、観客を見つけることがあります。

関連する問題