我最近在遇到一個涉及返回對象圖的Web API項目時遇到了(希望)小問題,以便它們可以被讀爲JSON。任務的處理對象圖 - Web API
例子中的物體(通過EF生成):與它的所有相關活動
//A Task Object (Parent) can consist of many Activities (Child Objects)
public partial class Task
{
public Task()
{
this.Activities = new HashSet<Activity>();
}
public int TaskId { get; set; }
public string TaskSummary { get; set; }
public string TaskDetail { get; set; }
public virtual ICollection<Activity> Activities { get; set; }
}
我ApiController中,我要求的特定任務(憑身份證)一起,通過:單任務請求的
例
//Simple example of pulling an object along with the associated activities.
return repository.Single(t => t.Id == id).Include("Activities");
一切似乎工作正常 - 但是當我嘗試導航到一個URL來訪問此,如/api/tasks/1
,該方法執行它應該,但沒有對象返回(只是一個簡單的找不到該頁面)。
如果我請求一個不包含任何活動的任務 - 一切都按預期工作,它會返回正確的JSON對象Activities : []
。
我確定有很多方法可以解決這個問題 - 我只是想我會對人們認爲是最好的處理方法有所瞭解。
考慮方法(到目前爲止):
使用其它的JSON解析器(如Newtonsoft.JSON),它固定在整個返回數據的問題,但附加的$ id和$裁判,這可能我相信難以解析Knockout。
使用投影和利用匿名類型返回數據。 (目前爲止未測試)
刪除完全包含並僅通過其他請求訪問子數據。
任何和所有的建議將不勝感激。
謝謝塞西爾 - 我會尋找嘗試沿着這些線路看看事情是怎麼回事。 –