-1

2つのテーブルを使用してEFとlinq2sqlに次の問題があります

表1:

Id | Name
1  | Name1
2  | Name2

表 2:

Id | Table1Id | Name
1  | 1        | SomeText1
2  | 1        | SomeText2
3  | 2        | SomeText3

テンプレートを使用して結果セットを取得するためのlinq2sqlクエリを作成したいと思います

Table1Id:contact(Table2.Name+";")

例えば

1:SomeText1;SomeText2
2:SomeText3
4

1 に答える 1

0

今朝は数分の余裕があったので、以下のサンプル実装を見つけてください。目的を達成するために指定したテーブルに加えて、2 つのテーブル間の関連付け (多対多) を追加する必要があります。これは結合テーブルで実行され、両方のエンティティにナビゲーション プロパティが追加されます。

以下のクエリは基本的に、テーブル 1 のエントリを選択し、Table2 ナビゲーション プロパティから関連付けられたレコードを含めることを示しています。この例では、コンテキスト内で遅延読み込みをオフにしました (これは、層を超えて、および/またはアプリケーションでシリアル化するときに問題が発生するため、ほぼ常に実行する必要があります)。

        // db first
        using (var db = new SO15312066Entities())
        {
            // iterate over table 1, with join values from 2
            var query = db.Table1.Include("Table2");

            foreach (var item in query)
            {
                Console.WriteLine("{0}:{1}", item.Id, string.Join(";", item.Table2.Select(x => x.Name).ToList()));
            }
        }

        //output
        //1:SomeText1;SomeText2
        //2:SomeText3

この実装の前提は、最初に EF データベースであるということです (最初に EF で問題が発生していると述べたように)。SO15312066Entities は、クエリの ObjectContext です。

これがどれだけうまく機能するかは確認していません。実際の実装ではあなたに任せます。

于 2013-03-12T08:59:09.480 に答える