2014-01-10 71 views
0

我有一個c#MVC應用程序通過/_vti_bin/ListData.svc服務參考訪問SharePoint博客數據。我能夠成功獲取所有PostsItem以及所有CategoriesItems。但是,它們之間似乎沒有任何關係。如果我獲取所有帖子並遍歷它們,則它們全部在Category屬性中顯示零個項目。通過WCF訪問SharePoint博客文章時有空類別

我的假設是,有一個多對多的表,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); 

回答

0

這些類別最有可能被認爲是SharePoint ListData服務中的「延遲」項。您將需要調用服務時加載延遲數據...

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

+0

快速,簡單,完美的解決方案。謝謝! –

+0

這裏是從我的代碼被修改線: '變種帖= db.Posts.Expand( 「分類」)OrderByDescending(p值=> p.Created);' 謝謝,@Jason。 –