我有以下(非常标准的)表结构:
Post <-> PostTag <-> Tag
假设我有以下记录:
PostID Title
1, 'Foo'
2, 'Bar'
3, 'Baz'
TagID Name
1, 'Foo'
2, 'Bar'
PostID TagID
1 1
1 2
2 2
换句话说,第一篇文章有两个标签,第二篇文章有一个标签,第三篇文章没有任何标签。
我想在一个查询中加载所有帖子及其标签但一直未能找到正确的运算符组合。我已经能够加载仅带有标签的帖子 or 当多个标签时重复发帖.
鉴于上面的数据库,我想在 Post 对象的集合属性中接收三个帖子及其标签(如果有)。有可能吗?
Thanks
耶!有效。
如果有人遇到同样的问题,这就是我所做的:
public IList<Post> GetPosts(int page, int record)
{
var options = new DataLoadOptions();
options.LoadWith<Post>(p => p.PostTags);
options.LoadWith<PostTag>(pt => pt.Tag);
using (var db = new DatabaseDataContext(m_connectionString))
{
var publishDateGmt = (from p in db.Posts
where p.Status != PostStatus.Hidden
orderby p.PublishDateGmt descending
select p.PublishDateGmt)
.Skip(page * record)
.Take(record)
.ToList()
.Last();
db.LoadOptions = options;
return (from p in db.Posts
where p.Status != PostStatus.Closed
&& p.PublishDateGmt >= publishDateGmt
orderby p.PublishDateGmt descending
select p)
.Skip(page * record)
.ToList();
}
}
这仅执行两个查询并加载每个帖子的所有标签。
这个想法是获取一些值来限制我们需要的最后一个帖子的查询(在本例中 PublishDateGmt 列就足够了),然后使用该值而不是 Take() 限制第二个查询。
感谢您的帮助西罗科。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)