Linq 使用Entity Framework和.NET 3.5查询多对多关系
我的问题实际上是双重的。首先,我对EF还很陌生,但我已经通过早期的捷径成功地使用了它。不过,对于这个特殊的项目,我计划花时间学习 我现在拥有的是一个非常简单的数据库结构: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
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,它生成一个包含两个实体的模型:Post和Tag
我正在努力实现的目标:
我试图在给定一个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)”方法,并且无法将此方法转换为存储表达式。