实体框架4中的多对多查询

Ben*_*man 4 c# linq-to-entities entity-framework entity-framework-4

我的数据库中有很多关系.两个结束表是BlogPost和Item,中间的表是ItemBlogPost.我需要找回与特定项目相关的所有BlogPost.在SQL中,我会这样做:

SELECT BlogPost.*
FROM BlogPost
    JOIN ItemBlogPost ON BlogPost.ID = ItemBlogPost.BlogPost_ID
WHERE ItemBlogPost.Item_ID = @Item_ID
Run Code Online (Sandbox Code Playgroud)

在C#中我有类似的东西:

IQueryable<BlogPost> itemBlogPosts = from b in connection.BlogPosts
                                     where b.Items == item.ID 
                                     orderby b.Content.CreateDate descending
                                     select b;
Run Code Online (Sandbox Code Playgroud)

但是,标记为b.Items的行没有给出Item属性的列表,并且没有b.ItemBlogPost来查看中间表.我也尝试过,b.Items.Contains(item)但也失败了.如何在LINQ to EF4中完成这项工作?

Lad*_*nka 22

那这个呢:

var itemBlogPosts = from i in connection.Items
                    from b in i.BlogPosts // I suppose you have a nav. property on Item
                    where i.Id == itemId
                    select b; 
Run Code Online (Sandbox Code Playgroud)

同样的查询也可以通过以下方式定义:

var itemBlogPosts = connection.Items
                              .Where(i => i.Id == itemId)
                              .SelectMany(i => i.BlogPosts);
Run Code Online (Sandbox Code Playgroud)