实体框架 - 加入多对多

时间:2009-07-25 15:30:11

标签: join entity

我有一个简单的多对多关系,我想知道如何从中获取数据。这是设置

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

有没有办法更好地做到这一点?

3 个答案:

答案 0 :(得分:2)

通常,我从多对多地图中选择。

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

答案 1 :(得分: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();
}

答案 2 :(得分:0)

对Kleinux的回应(不知道为什么我不能对你的问题添加评论)

当然可以,但这并不是一件好事,因为上下文会给你一个新的“关键词”。然后,如果您尝试更新此内容或认为您将更新的内容,则上下文会将其视为新关键字并创建一个新关键字而不是更新它。

**更新 对不起我的英语,我是法国人,不是法国人,而是来自魁北克省。我给了我110%!!