c# - Entity Framework 4 中的多对多查询

标签 c# entity-framework entity-framework-4 linq-to-entities

我的数据库中有一个多对多的关系。两端的表是 BlogPost 和 Item,中间的表是 ItemBlogPost。我需要取回与特定项目相关的所有 BlogPost。在 SQL 中,我会这样做:

SELECT BlogPost.*
FROM BlogPost
    JOIN ItemBlogPost ON BlogPost.ID = ItemBlogPost.BlogPost_ID
WHERE ItemBlogPost.Item_ID = @Item_ID

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

IQueryable<BlogPost> itemBlogPosts = from b in connection.BlogPosts
                                     where b.Items == item.ID 
                                     orderby b.Content.CreateDate descending
                                     select b;

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

最佳答案

这个怎么样:

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; 

同样的查询也可以定义为:

var itemBlogPosts = connection.Items
                              .Where(i => i.Id == itemId)
                              .SelectMany(i => i.BlogPosts);

关于c# - Entity Framework 4 中的多对多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587288/

相关文章:

c# - 如何重写void方法

c# - 在 LINQ 语句中使用部分类属性

entity-framework - 自定义实体具体化

c# - 有没有办法覆盖部分类中属性的应用顺序?

c# - 使用 Linq 从有序结果中选择对象

mysql - 连接 ASP.NET MVC 应用程序以移动 MySQL 数据库时出现问题

c# - 在没有 Visual Studio 的情况下使用 Microsoft.VisualStudio.TestTools.UnitTesting?

c# - 我是否干净地编写了这个异常处理?

c# - 强制变量只保存某些值

entity-framework - Entity Framework 是否可以在主键和外键之间添加关联