SharePoint 博客文章在通过 WCF 访问时具有空类别



我有一个 c# MVC 应用程序,它通过/_vti_bin/ListData.svc 服务参考访问 SharePoint 博客数据。我能够成功获得所有帖子项目以及所有类别项目。但是,它们之间似乎没有关系。如果我获取所有帖子并循环浏览它们,则所有帖子在 Category 属性中都显示零项。

我的假设是,SharePoint 正在使用的多对多表无法通过 WCF 获得。我想知道是否有办法访问这些信息。这是我的代码。

public List<BlogData.PostsItem> GetPostsByCategory(string category)
    {
        List<BlogData.PostsItem> items = new List<BlogData.PostsItem>();
        BlogData.CategoriesItem categoryItem = db.Categories.Where(c => c.Title == category).FirstOrDefault();
        if (categoryItem != null)
        {
            var posts = db.Posts.ToList().OrderByDescending(p => p.Created);
            foreach (var postsitem in posts)
            {
                Debug.Write(postsitem.Category.Count());
                if (postsitem.Category.Contains(categoryItem))
                {
                    items.Add(postsitem);
                }
            }
        }
        return items;
    }

解决:

添加

db.LoadProperty(postsitem, "Category");

以前

if (postsitem.Category.Contains(categoryItem))

它就像一个魅力。谢谢,杰森。

编辑2:

显然,在进一步阅读后,考虑到我想检查一个类别的所有帖子,这不是最有效的方法。我使用的是 Expand,而不是 LoadProperty。

var posts = db.Posts.Expand("Category").OrderByDescending(p => p.Created);

这些类别很可能被视为 SharePoint ListData 服务中的"延迟"项。调用服务时,您将需要加载延迟的数据...

http://msdn.microsoft.com/en-us/library/ee358709%28v=vs.110%29.aspx

最新更新