Linq 使用Entity Framework和.NET 3.5查询多对多关系

Linq 使用Entity Framework和.NET 3.5查询多对多关系,linq,entity-framework,linq-to-entities,many-to-many,Linq,Entity Framework,Linq To Entities,Many To Many,我的问题实际上是双重的。首先,我对EF还很陌生,但我已经通过早期的捷径成功地使用了它。不过,对于这个特殊的项目,我计划花时间学习 我现在拥有的是一个非常简单的数据库结构: Post =================== Id Title ------------------- 1 Hello world 2 Foo bar baz Tag =================== Id Title ------------------- 6 tes

我的问题实际上是双重的。首先,我对EF还很陌生,但我已经通过早期的捷径成功地使用了它。不过,对于这个特殊的项目,我计划花时间学习

我现在拥有的是一个非常简单的数据库结构:

Post
===================
Id     Title
-------------------
 1     Hello world
 2     Foo bar baz

Tag
===================
Id     Title
-------------------
 6     test
 7     todo

PostTags
===================
PostId     TagId
-------------------
     1         6
     1         7
     2         7
使用EF,它生成一个包含两个实体的模型:PostTag

我正在努力实现的目标: 我试图在给定一个tagid数组(例如6和7)的情况下查询模型中的所有帖子。然而,我不知道我需要做些什么才能让它起作用。
之前,我在映射表(BlogPosts)中添加了一个自动增量PK,并将其添加到EF模型中,但这更像是一个丑陋的黑客行为。这次我宁愿学习如何正确操作。

这将在EFv4中起作用。在EFv1中尝试:

var tagIds = new int[] { 6, 7 };
var query = context.Tags
                   .Where(t => tagIds.Contains(t.Id))
                   .SelectMany(t => t.Posts);
编辑:


我检查了它,并在EFv4中添加了集合值参数+
Contains
,因此上述示例在EFv1中不起作用。提供了允许EFv1中的操作员进入的解决方法。另一个推荐的解决方法是升级到EFv4,因为还有许多其他改进,包括性能的显著改进

谢谢你的回复,但是我使用的EF 1似乎不起作用。引发以下异常:LINQ to Entities无法识别方法“Boolean Contains(Int32)”方法,并且无法将此方法转换为存储表达式。