3

2 つの別個の Entity Framework モデルに 2 つのテーブルがあり、2 つのテーブル間で JOIN を作成してデータを取得したいと考えています。Entity Framework 3.1 を使用しています。

2 つのテーブル間で JOIN を実行して情報を取得することは可能ですか?

はいの場合、「LINQ to Entities」または「Entity SQL」を使用する必要がありますか?

4

3 に答える 3

0

Entity Framework モデルは、データベース (ストア) モデルとクラス モデル間のマッピングです。現在 (あるとしても) 1 つの EF モデルは別のモデルのマッピング情報を読み取ることができません。そのため、エイリアン クラスをテーブルにマップすることはできません。ましてや、そのテーブルを含む SQL を作成することはできません。EF に関する限り、テーブルは 2 つのまったく異なるデータベースにある可能性があります。

代替案:

  • linq-to-objects を使用して、2 つのモデルから事前にフェッチされたデータを結合します。つまり、たとえば によってメモリにフェッチされたデータToList()です。
  • 1 つのモデルから値のリストを収集し、それを使用して他のモデルからデータを取得します (たとえば、他のモデルから sを取得するステートメントでOrderId使用される s のリスト- 非現実的な例、OK)。ContainsOrderline
  • 両方 (およびそれ以上) のテーブルに対して 1 つの EF モデル マッピングのみを使用します。
于 2012-07-24T18:18:29.467 に答える
0

私の知る限り、EFはそれをしません。複数のドメインからのエンティティを含む単一の式を作成することはできません。結果の最初の項目を要求すると失敗します。

于 2012-07-24T14:29:44.890 に答える
-1

あなたはおそらくこれまでにこれを理解しましたが、ここに私の解決策があります:

var data = db.FirstEntity
           .Join(db.SecondEntity, ent1 => ent1.ID, ent2 => ent2.ForeignKeyID,
           (ent1, ent2) => new { LeftSideObject = ent1, RightSideObject = ent2 }) 
           .Select(x => x.LeftSideObject); 

変数にはできる限り一般的な名前を付けましたが、意味があることを願っています!

于 2013-09-25T07:50:55.270 に答える