0

私は単純な多対多の関係を持っており、それからどのようにデータを取得するのか疑問に思っています。これがセットアップです

テーブル

メディアMedia_Keyword(多対多のマップ)キーワード

これが私が持っているコードです:

    public List<Keyword> GetFromMedia(int mediaID)
    {
        var media = (from m in Connection.Data.Media
                   where m.id == mediaID
                   select m).First();

        var keys = (from k in media.Media_Keyword
                    select new Keyword {ID = k.Keywords.id, Name = k.Keywords.keyword});

        return keys.ToList();
    }

これをより良くする方法はありますか?

4

3 に答える 3

2

通常、多対多マップから直接選択します。

var keys = from k in Connection.Data.Media_Keyword
       where k.MediaID == mediaID
       select k.Keywords;
于 2009-07-25T15:35:37.797 に答える
0

Kleinuxへの回答(質問にコメントを追加できない理由がわかりません)

確かに可能ですが、コンテキストが新しい「キーワード」を提供するため、必ずしも良いことではありません。次に、これまたは更新すると思われるものを更新しようとすると、コンテキストはそれを新しいキーワードと見なし、更新する代わりに新しいキーワードを作成します。

**更新私の英語は申し訳ありませんが、私はフランス語です。フランス語ではありませんが、ケベック出身です。110%あげます!!

于 2009-08-12T18:03:17.040 に答える
0

エンティティフレームワークは特に使ったことがないのですが、このように組み合わせていただけないでしょうか。

public List<Keyword> GetFromMedia(int mediaID)
{
    return (from m in Connection.Data.Media
               from k in m.Media_Keyword
               where m.id == mediaID
               select new Keyword {ID = k.Keywords.id, Name = k.Keywords.keyword}).ToList();
}
于 2009-07-25T15:36:42.957 に答える