我有一个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);
答案 0 :(得分:0)
这些类别很可能被视为SharePoint ListData服务中的“延迟”项。您需要在调用服务时加载延迟数据...
http://msdn.microsoft.com/en-us/library/ee358709%28v=vs.110%29.aspx