如何加载多对多的LINQ查询?

6 linq-to-sql

我有以下(非常标准)表结构:

Post <-> PostTag <-> Tag
Run Code Online (Sandbox Code Playgroud)

假设我有以下记录:

PostID Title
1,     'Foo'
2,     'Bar'
3,     'Baz'

TagID Name
1,    'Foo'
2,    'Bar'

PostID TagID
1      1
1      2
2      2
Run Code Online (Sandbox Code Playgroud)

换句话说,第一个帖子有两个标签,第二个标签有一个标签,第三个标签没有标签.

我想在一个查询中加载所有帖子及其标签,但无法找到正确的运算符组合.我已经能够加载带有标签的帖子多个标签时重复的帖子.

鉴于上面的数据库,我想在Post对象的collection属性中收到三个帖子及其标签(如果有的话).有可能吗?

谢谢

sir*_*cco 0

我在另一篇文章中回答了这个问题:关于急切加载。在你的情况下,它可能是这样的:

DataLoadOptions options = new DataLoadOptions();    
options.LoadWith<Post>(p => p.PostTag);
options.LoadWith<PostTag>(pt => pt.Tag); 
Run Code Online (Sandbox Code Playgroud)

不过要小心 - DataLoadOptions 必须在任何查询发送到数据库之前设置 - 如果没有,则会抛出异常(不知道为什么在 Linq2Sql 中会这样 - 可能会在以后的版本中修复)。