我的问题实际上是双重的。首先,我对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,它会生成一个包含两个实体的模型:发布和标记。
我正在尝试使用tagIds数组(例如6和7)查询所有帖子的模型。但是,我无法弄清楚我需要做些什么来完成这项工作。 以前我欺骗的方式是我将自动增量PK添加到映射表(BlogPosts)并将其添加到EF模型中,但它更像是一个丑陋的黑客以便向前推进。我宁愿在这次学习如何做到这一点。
答案 0 :(得分:1)
这适用于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中不起作用。 This thread in MSDN forum提供了解决方法以允许EFv1中的IN运算符。另一个推荐的解决方法是简单地升级到EFv4,因为还有许多其他改进,包括性能的显着改进。