Entity Framework - присоединяйтесь ко многим ко многим

У меня простые отношения "многие ко многим", и мне интересно, как можно извлечь из них данные. Вот установка

Таблицы

Media 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();
    }

Есть ли способ сделать это лучше?


person Eric Packwood    schedule 25.07.2009    source источник


Ответы (3)


Обычно я выбираю прямо на карте «многие ко многим».

var keys = from k in Connection.Data.Media_Keyword
       where k.MediaID == mediaID
       select k.Keywords;
person JoshJordan    schedule 25.07.2009

Я специально не использовал фреймворк сущностей, но разве вы не можете просто так их скомбинировать?

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();
}
person Kleinux    schedule 25.07.2009

Ответ на Kleinux (не знаю, почему я не могу добавить комментарий к вашему вопросу)

Конечно, можете, но это не обязательно хорошо, потому что контекст дает вам новое «ключевое слово». Затем, если вы попытаетесь обновить это или что-то еще, думая, что вы обновите, контекст увидит это как новое ключевое слово и создаст новое вместо его обновления.

** ОБНОВЛЕНИЕ Извините за мой английский, я француз, ну не француз, а из Квебека. Я выкладываюсь на 110% !!

person Simon Dugré    schedule 12.08.2009