通过WCF访问时,SharePoint博客帖子具有空类别

时间:2014-01-10 17:28:17

标签: c# linq wcf sharepoint sharepoint-2010

我有一个c#MVC应用程序,它通过/_vti_bin/ListData.svc服务引用访问SharePoint博客数据。我能够成功获取所有PostsItems以及所有CategoriesItems。但是,他们之间似乎没有任何关系。如果我获取所有帖子并循环遍历它们,它们都会在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:

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

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

1 个答案:

答案 0 :(得分:0)

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

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