Linq - EF:如何查询Junction表?

时间:2011-07-12 08:37:19

标签: linq entity-framework linq-to-entities

我使用c#,linq和EF4。

我的概念模型中的数据库中有两个表:

数据库表:

CmsContents
CmsRelatedContents (Junction table)

实体类型:

CmsContent

我有一些导航属性:

for CmsContent --> CmsContents --> Return Collection of CmsContent --> from role: CmsContent1 to CmsContent (map ToContentId)
for CmsContent --> CmsContents1 --> Return Collection of CmsContent --> from role: CmsContent to CmsContent1 (map FromContentId)

表示连接表(CmsRelatedContents)的DataBase中的数据:

FromContentId   ToContentId
4               3
5               2

在表CmsContents中:

ContentId
2
3
4
5

我需要使用Linq或EF来检索Objects in CmsContent列中关联的ToContentId,过滤特定FromContentId

的连接表

你知道怎么做吗?

请提供我的代码示例。感谢您的帮助!


编辑:解决方案

// Option A:
           var test = from cnt in context.CmsContents
                       where cnt.CmsContents.Any(t => t.ContentId == contentId)
                       select cnt;

// Option B: 
       var toContents = context.CmsContents.Where(r => r.CmsContents.Any(t => t.ContentId == contentId));

感谢你们的支持!

1 个答案:

答案 0 :(得分:2)

不确定我是否理解正确,但这可能就是您所需要的:

dbContext.CmsContent.Where(r => r.CmsContents.Any(t => t.Id = someId))