0

asp.netMVCモデルについて比較的簡単な質問があります。

1対多の関係でリンクされている2つのテーブルに基づくモデルがあります。

テーブルAnimalGroup(ID、name)

テーブルAnimalSubGroup(ID、name、AnimalGroupID)

各AnimalGroupには、任意の数のAnimalSubgroupがあります。

各AnimalGroupのAnimalSubGroupsを反復処理して、AnimalSubGroup.name(たとえば)を取得するにはどうすればよいですか?私はasp.netMVCを初めて使用し、さまざまなチュートリアルを実行していますが、基本的なアプリケーションをセットアップして1つのテーブルから結果を取得するのに優れていますが、結果を取得する方法に固執しています。同じモデルでリンクされた複数のテーブルから。解決策としてViewModelへの参照を見てきましたが、ViewModelは、2つの無関係なテーブルからのデータを1つのビューに入れるのに役立つようです。

前もって感謝します。

4

2 に答える 2

0

初め。データベースに外部キーが定義されていますか? はいの場合、edmx モデル ジェネレーターはすべての接続を定義します。そうでない場合は、今すぐ実行してください。完了したら、次の方法でサブグループ名を選択できます。

  1. コンテキストから直接取得する:

    context.AnimalSubGroupSet.Where(sg => sg.AnimalGroupID = requestedAnimalGroupID).Select(sg => sg.Name).ToList;

  2. AnimalGroup から取得:

    animalGroup.AnimalSubGroups.Select(sg => sg.Name);

このコードは調整が必要な場合がありますが、複雑にする必要はありません。

于 2010-03-02T03:03:25.020 に答える
0

おそらく、LINQ の SelectMany クエリ演算子を確認する必要があります。これは、1 対多のデー​​タ テーブル リレーションシップをサブ反復します。SelectMany 呼び出しを連鎖できることに注意してください。

var mymanyselections = datacontext.parenttable.SelectMany(l=>l.Name).SelectMany(m=>m.Name);

これは、データ テーブルに外部キー リレーションシップがあることを前提としています。

于 2010-03-02T03:20:57.497 に答える